1. 程式人生 > >數學取模運算——1的個數

數學取模運算——1的個數

問題 I: 1的個數

時間限制: 1 Sec  記憶體限制: 32 MB
提交: 9  解決: 6
[提交][狀態][討論版]

題目描述

對於一個給定的[0,10000]內的不能被2或5整除的整數n,n放大某些倍數後,結果會是僅由很多1組成的一個數a。現在請你找出最小的那個a中包含的1的個數。

輸入

輸入包含多組測試資料。每組輸入為一個整數n(0<=n<=10000)。

輸出

對於每組輸入,輸出最小的那個a中包含的1的個數。

樣例輸入

3
7
9901

樣例輸出

3
6
12

提示

模運算的重要結論:(a*b)%p=(a%p*b)%p    (a+b)%p=(a%p+b)%p

#include <bits/stdc++.h>

using namespace std;

int main()
{
   int n;

   while(cin>>n)
   {
       int k=0;

       for(int i=1;;i++)
       {
           k=k%n*10+1;//提前讓k對n取模與原式相等
           if(k%n==0)
           {
              cout<<i<<endl;
              break;
           }
       }
   }

    return 0;
}