Description
给你一个字数字n (0<=n<=10000) 这个n不是2和5的倍数 。n的倍数中有一些都是1组成的。对于某个n请找出最少的1的个数使得这个数字是n的倍数
Input
输入一个数n
Output
输出最少的1的个数使得这个数字是n的倍数
Sample Input
3 7 9901
Sample Output
3
6
12
分析:
大数取余;
ans = (ans*10+1)%n;
=((ans*10)%n+1%n)%n;
=((ans%n*10)%n+1)%n;
代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
int main()
{
ll n;
while(~scanf("%lld",&n))
{
if(n==0||n==1)
{
printf("%lld\n",n);
continue;
}
ll con=1;
ll ans=1;
while(ans!=0)
{
con++;
ans=((ans%n*10)%n+1)%n; //大数取余;
}
printf("%lld\n",con);
}
return 0;
}