zcmu.oj-1559:1++++

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;
}

猜你喜欢

转载自blog.csdn.net/kyrieee/article/details/80410783