Given any integer 0 <= n <= 10000 not divisible by 2 or 5, some multiple of n is a number which in decimal notation is a sequence of 1's. How many digits are in the smallest such a multiple of n?
Sample Input
3
7
9901
Sample Output
3
6
12
题很短,但是看不懂 = =!
就是说输入一个数,假如有个i位的11111……111可以整除这个数,输出1的个数
普通的思想
sum=sum*10+1
然后用sum%x会超时
这里有个技巧sum=(sum*10+1)%x
这样每次sum就很小,意思就是直到把sum中保存的余数除完为止
代码:
#include <iostream>
using namespace std;
int main()
{
long long sum;
int count;
int x;
while(cin>>x)
{
count=1;
sum=1;
if(x==1)
cout<<x<<endl;
else
{
while(sum%x!=0)
{
sum=(sum*10+1)%x;
count++;
}
cout<<count<<endl;
}
}
return 0;
}
本文介绍了一种高效算法,用于解决给定一个不被2或5整除的整数n,找到能被n整除的最小全1数的问题。通过不断累加1并取模的方式,避免了大数运算,最终输出该全1数的长度。
613

被折叠的 条评论
为什么被折叠?



