saber the saber 2022-10-29 09:52 采纳率: 77.8%
浏览 24
已结题

又超时又越界怎么办%>_<%

这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1。11、111,1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。

提示:一个显然的办法是逐渐增加光棍的位数,直到可以整除x为止。但难点在于,s可能是个非常大的数 —— 比如,程序输入31,那么就输出3584229390681和15,因为31乘以3584229390681的结果是111111111111111,一共15个1。

输入格式:
输入在一行中给出一个不以5结尾的正奇数x(<1000)。

输出格式:
在一行中输出相应的最小的s和n,其间以1个空格分隔。
#include <stdio.h>
int main()
{
int x;
scanf("%d",&x);

unsigned long long dog=1;
int i=1;

while(dog%x!=0){
    dog=dog*10+1;
    i++;
}

printf("%llu %d",dog/x,i);
return 0;

}

  • 写回答

1条回答 默认 最新

  • 浪客 2022-10-29 11:22
    关注
    //unsigned long long  最大20位,i超过就溢出了。么有这个限制会死循环。
     while (dog % x != 0 && i < 20)
        {
            dog = dog * 10 + 1;
            i++;
        }
        if (i == 20)
            printf("溢出");
        else
            printf("%llu %d", dog / x, i);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月6日
  • 已采纳回答 10月29日
  • 创建了问题 10月29日

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)