c语言-C语言题目,跪求大神给个代码,实在不会啊

问题描述

C语言题目,跪求大神给个代码,实在不会啊

描述
大家都知道二进制数只含有0和1,那么问题来了,告诉你一个区间[L,R),L,R都是int范围类的正整数.且L < R,在这个区间里的所有数转化为二进制后所有位数之和最大的数是?(如果有多个输出值最小的)

输入
多组测试数据,每组测试数据仅含有两个整数L,R。
输出
一个整数,表示在以上区间内转化成二进制后所有位数之和最大的数
样例输入
4 7
样例输出
5

解决方案

#include <stdio.h>

int cal(int n){
    int res = 0;
    while(n){
        res += (n & 1);
        n >>= 1;
    }
    return res;
}

int main()
{
    int l,r;
    int i, res;
    int tmp, curr_max = 0;
    printf("请输入L和R的值n");
    while(scanf("%d%d", &l, &r)){
    for(i = l; i < r; i++){
        tmp = cal(i);
        if(tmp > curr_max){
            curr_max = tmp;
            res = i;
        }
    }
    printf("最终的结果:%dn", res);
  }
  return 0;
}

解决方案二:

#include
using namespace std;

int cal(int n){
int res = 0;
while(n){
res += (n & 1);
n >>= 1;
}
return res;
}

int main()
{
int l,r;
int i, res;
int tmp, curr_max = 0;
cout << "请输入L和R的值" << endl;
cin >> l >> r;
for(i = l; i < r; i++){
tmp = cal(i);
// cout << "tmp:" << tmp << endl;
if(tmp > curr_max){
curr_max = tmp;
res = i;
}
}
cout << res << endl;
return 0;
}

解决方案三:

#include

int cal(int n){
int res = 0;
while(n){
res += (n & 1);
n >>= 1;
}
return res;
}

int main()
{
int l,r;
int i, res;
int tmp, curr_max = 0;
printf("请输入L和R的值n");
while(scanf("%d%d", &l, &r)){
for(i = l; i < r; i++){
tmp = cal(i);
if(tmp > curr_max){
curr_max = tmp;
res = i;
}
}
printf("最终的结果:%dn", res);
}
return 0;
}

解决方案四:

提供一个与众不同的思路。
建立一个0 - 7数值的位数之和表。如 int a[8] = {0, 1, 1, 2, 1, 2, 2, 3};
对每一个整数,每3位统计一次1的位数,具体是多少,就查上面的表。

如果想更快,就建 0 - 15, 0 - 31等表格,但要是2的n次幂,方便计算。

时间: 2024-11-30 21:13:26

c语言-C语言题目,跪求大神给个代码,实在不会啊的相关文章

acm的c语言扫雷编程题目,求大神指点

问题描述 acm的c语言扫雷编程题目,求大神指点 解决方案 这是输出的部分,待会附上我的代码 解决方案二: 你是要找人代写,还是说代码需要debug? 解决方案三: 这是哪个acm平台呀,这个算法应该就是算临域,完后计数加加的吧 解决方案四: 问题出在最后和标准差个空格 #include #include #include int main(){ int c,b,i,j; int x=1; char a[1000][1000]; while(scanf("%d%d",&c,&a

跪求大神解答-跪求大神赐予关键代码

问题描述 跪求大神赐予关键代码 我们学校最近要做一个C#的Ktv项目,作为第一个学期的结业项目.我用的是windows media player 系统自带的一个播放器,我想下载一些mkv格式的音乐视频作为数据,我想知道怎么用代码控制这个播放器做一个伴唱功能出来.开发工具用的是VS,我也是听别人说mkv格式的视频有两种方式播放.各位大神如果有更好的建议,我跪求-- 解决方案 android我知道,vs的不太清楚.

c语言-关于C语言链表的一些问题,代码怎么都运行不成功跪求大神指点

问题描述 关于C语言链表的一些问题,代码怎么都运行不成功跪求大神指点 下面代码主要实现链表的创建,插入,删除,并且能将两个年龄递增链表进行合并成递减链表 然而在插入和删除操作中gets函数无法起作用,strcmp函数也出现位置冲突报错..功力不足实在解决不了..跪求大神解答..(感觉自己写的东西除了上面两个错误应该还有,但是因为位置冲突问题就只能编译到那个地方无法进行下去..我肉眼实在找不出来.. #include<stdio.h> #include<stdlib.h> #incl

调用函数-一道C语言的题目,求大神解答

问题描述 一道C语言的题目,求大神解答 输入一个正整数,逐位分割该数的每一位数字,求由数字所构成的最大整数.例如:输入624891,得到最大整数:986421.要求定义和调用函数计算并返回一个x可构成的最大整数. 解决方案 #include #define N 20 int fun(int n) { int x,t,s[N]={0},i,j,len; for(len=0;x!=0;len++) { x=n/10; s[len]=n%10; n=x; } for(i=0;i<len-1;i++)

c语言-一道acmC语言题目,求大神解答

问题描述 一道acmC语言题目,求大神解答 描述国庆前每日一弹其中一道题是一个递推公式:f(n)=f(n-1)+f(n-2).现在已知f(1)=1f(2)=1.现在请你设计一个程序计算第n项对520取余的值(%520). 输入多组输入:对于每组输入:只有一行,一个n(0<n≤10^9),表示第n项.输出输出f(n)%520的值.样例输入 解决方案 如果有a = b+c,那么有a%520 = (b%520 + c%520)%520,可以照这样递推上去吧.不会溢出,就是不知道时间会不会超时. 解决方

简单数字钟-求一基于AT89C52的数字钟设计的C语言程序代码,图已做好,有流程图和项目要求,跪求大神帮忙!!!

问题描述 求一基于AT89C52的数字钟设计的C语言程序代码,图已做好,有流程图和项目要求,跪求大神帮忙!!! 麻烦大神最好能把程序与图匹配符合要求就好了 一会把图和要求发在下面 解决方案 解决方案二: 解决方案三: 解决方案四: 解决方案五: 再次感谢,求帮忙,求助攻,求各种

编程c语言-c语言课设考试题目,求大神们帮忙

问题描述 c语言课设考试题目,求大神们帮忙 各位兄弟们能不能帮帮忙,课设考试.竞赛编程题目">

c语言-问大神们一个C语言蓝桥杯的问题,跪求大神啊

问题描述 问大神们一个C语言蓝桥杯的问题,跪求大神啊 加法变乘法 我们都知道:1+2+3+ ... + 49 = 1225 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如: 1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015 就是符合要求的答案. 请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10). 注意:需要你提交的是一个整数,不要填写任何多余的内容. #include "stdio.h&quo

c语言-C语言的一个程序,求大神

问题描述 C语言的一个程序,求大神 三.实验内容 1.实验题目:手动输入10个0~100之内的整数,按从小到大排列输出.: (1)要求 排序算法: 使数组从小到大排序的规则如下: ⑴ 设数组为a[0],a[1],-,a[n-1],构造i循环从0,1,-,n-2变化,构造j循环从i+1,i+2,-,n-1变化,即j>i. ⑵ 对于任何一个a[i],如果a[i]>a[j],表面前面有一个元素a[i]比它后面的元素a[j]大,a[i]应该在后面,a[j]应该在前面,交换a[i]与a[j]. ⑶ 对于