LD_Dreamk 2022-11-14 22:25 采纳率: 100%
浏览 11
已结题

c语言关于求解光棍数问题

img


#include<stdio.h>
int main ()
{ int s,min,x,n;
double i ;
scanf("%d",&x);
for (i=1,n=0;;i=i*10+1)
{ n++;
if( (int)i%x==0)
{
printf("%d %d",i/x,n);
break ;
}

}

}

问问为什么我这样的代码最后会出现运行超时啊

img

  • 写回答

1条回答 默认 最新

  • 黛琳ghz 2022年度博客之星前端领域TOP 8 2022-11-15 08:45
    关注
    
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    
    int main() {        //模拟手动算除法过程
        int x;
        scanf("%d", &x);        
        int count = 1;   
        int a = 1;        //a用来表示光棍数
    
        //通过循环求出能除以x的最小a值(注:此处并不要求整除,能进行除法运算即可,即a>=x便可)
        while (a < x) {            
            a = a * 10 + 1;        
            count++;
        }
        printf("%d", a / x);    //输出最高位数字
    
        int t = a % x;            //用t记录余数;
        while (t!=0) {            //利用循环将商从高到低位依次输出,直到余数为0。
            t = t * 10 + 1;        
            printf("%d", t / x);
            count++;
            t %= x;
        }
        printf(" %d", count);
    
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月23日
  • 已采纳回答 11月15日
  • 创建了问题 11月14日

悬赏问题

  • ¥15 php 将rtmp协议转hls协议,无法播放
  • ¥15 miniconda安装不了
  • ¥20 python代码编写
  • ¥20 使用MPI广播数据遇到阻塞
  • ¥15 TinyMCE如何去掉自动弹出的“链接…”工具?
  • ¥15 微信支付转账凭证,如何解决
  • ¥15 在win10下使用指纹登录时,界面上的文字最后一个字产生换行现象
  • ¥20 使用AT89C51微控制器和MAX7219驱动器来实现0到99秒的秒表计数,有开始和暂停以及复位功能,下面有仿真图,请根据仿真图来设计c语言程序
  • ¥15 51单片机 双路ad同步采样
  • ¥15 使用xdocreport 生成word