点赞(0)
 

0.0分

8 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 6 条评论

4年前 回复TA
@阿俊 说错了k的取值不能为1,最小值也要为2
4年前 回复TA
@阿俊 感觉那个确实有点问题,不过i的起始值为6会更好一点,既然要两位数k的取值就不能是2所以所以i的最小值只能是4,而初始值为6的时候其四进制的值为12为符合条件两位数的最小值。
阿俊 4年前 回复TA
#include<stdio.h>
#include<math.h>
int judge(int t,int l)
{
    int i=0,j,p=0,a[10];
    while(t!=0)  //进制转换
    {
        i++;
        a[i] = t%l;
        t = t/l;
    };
    for(j=i;j>1;j--)
        if(a[j]<a[j-1])  //高位与低位比较
            p++;  //记录合规比较的次数
    if(p==(i-1)&&p!=0)  //比较次数都合规
        return 1;
    else
        return 0;
}
int main()
{
    int k,w;
    int i,j,n=0;
    scanf("%d%d",&k,&w);
    k = pow(2,k);  //求2的k次方
    w = pow(2,w);  //
    for(i=0;i<w;i++)  //遍历r所有可取的数
        if(judge(i,k))
            n++;  //记录符合的数
    printf("%d\n",n);
    return 0;
}
这是我改进的!
阿俊 4年前 回复TA
我又验证了一下   其实有点错误!
阿俊 4年前 回复TA
@光仔 没毛病!
光仔 4年前 回复TA
赞,程序通俗易懂