tugouzhishen 2022-11-07 09:13 采纳率: 88.5%
浏览 132
已结题

C语言用穷举循环判断实现猜字游戏

问题遇到的现象和发生背景

有7个人在一起玩猜电话号码的游戏。
这是一个8位的电话号码。
甲说,这个数字的千万位数字比百万位数字大。
乙说,这个数字的百位数字与十位数字相同。
丙说,这个数字的百万位、十万位、万位数字相乘的结果与百位、十位、个位数字相乘的结果相同,并且这个乘积不为0。
丁说,把这个数字的十万位、万位、千位、百位数字看作一个四位数,这个四位数是一个非负整数的平方。
戊说,把这个数字的千万位、千位、个位数字相加,和是一个质数。
己说,把这个数字的所有数位相加,和是10的整数倍。
你是庚,请列出所有满足条件的8位数字。

用代码块功能插入代码,请勿粘贴截图
我的解答思路和尝试过的方法

用循环和判断

我想要达到的结果

庚:53846446
甲:5>3
乙:4=4
丙:384=446
丁:8464=92*92
戊:5+6+6=17
己:5+3+8+4+6+4+4+6=40

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2022-11-07 09:19
    关注

    傻一点的办法就是穷举了,把8位数都遍历一遍。分解出8位数字,判断是否符合条件。题目的时间限制是多长?

    #include<stdio.h>
    #include <math.h>
    void int2arr(int n,int *a)
    {
        int i = 7;
        while(n>0)
        {
            a[i--] = n%10;
            n/=10;
        }
    }
    
    int isprime(int n)
    {
        if(n<2)
            return 0;
        int k = sqrt(n*1.0);
        for(int i=2;i<=k;i++)
            if(n%2==0)
                return 0;
        return 1;
    }
    
    int main()
    { 
        /*有7个人在一起玩猜电话号码的游戏。
    这是一个8位的电话号码。
    甲说,这个数字的千万位数字比百万位数字大。
    乙说,这个数字的百位数字与十位数字相同。
    丙说,这个数字的百万位、十万位、万位数字相乘的结果与百位、十位、个位数字相乘的结果相同,并且这个乘积不为0。
    丁说,把这个数字的十万位、万位、千位、百位数字看作一个四位数,这个四位数是一个非负整数的平方。
    戊说,把这个数字的千万位、千位、个位数字相加,和是一个质数。
    己说,把这个数字的所有数位相加,和是10的整数倍。
    你是庚,请列出所有满足条件的8位数字。*/
        for(int i=10000000;i<=99999999;i++)
        {
            int a[8];
            int2arr(i,a);
            if(a[0] <= a[1])
                continue;
            if(a[5] != a[6])
                continue;
            if(a[1]*a[2]*a[3] == 0 || a[1]*a[2]*a[3] != a[5]*a[6]*a[7])
                continue;
            int k = a[2]*1000 + a[3]*100 + a[4]*10 + a[5];
            int p = sqrt(k*1.0);
            if(fabs(p*p-k*1.0) > 0.00001)
                continue;
            if(!isprime(a[0]+a[4] + a[7]))
                continue;
            int sum = 0;
            for(int j=0;j<8;j++)
                sum += a[j];
            if(sum %10 != 0)
                continue;
            printf("%d\n",i);
        }
        return  0;
    
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月10日
  • 已采纳回答 11月7日
  • 修改了问题 11月7日
  • 赞助了问题酬金15元 11月7日
  • 展开全部

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?