ZOJ 1889 n的倍数使11111…位数最少

////////////////////////////////////////////////////////
//1889  n的倍数使11111…位数最少
//思路:使题意转变为:给出n,算出最小的x满足10^x mod 9n = 1    (思路完全与1489一样)
//      高精度,需要不断地缩小数据的规模。首先,n=1时,x=0;
//      其次,每次把10^k nod 9n的余数乘10,得到是原(10^k)*10的余数,即10^(k+1)
//      的余数。

 


#include<iostream>
using namespace std;

 

int main()
{
    long temp,n,count;
    while(cin>>n)
    {
        if(n==1)
        {
            cout<<1<<endl;
            continue;
        }
        n=9*n;
        count=1;
        temp=10;
        while(temp!=1)
        {
            temp*=10;
            count++;
            temp%=n;
        }
        cout<<count<<endl;
    }
    return 0;
}

 

你可能感兴趣的:(ZOJ)