题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1035
题意:中文题诶~
思路:求满足 10^k=1(mod x) (k<=x) 的最小k(不懂的看这里:http://w3.math.sinica.edu.tw/math_media/d253/25311.pdf)
代码:
1 #include <bits/stdc++.h>
2 #define MAXN 1010
3 using namespace std;
4
5 int geloutingyu(int x, int temp){//***计算k
6 int ans=1;
7 for(int i=1; i<=temp; i++){ //***乘法取摸
8 ans*=10;
9 ans%=x;
10 if(ans==1){
11 return i;
12 }
13 }
14 return 0;
15 }
16
17 int main(void){
18 int num=6, cc=7, n;
19 cin >> n;
20 if(n<=10){
21 cout << cc << endl;
22 }else{
23 for(int i=11; i<=n; i++){
24 int gg=i;
25 while(gg%2==0){
26 gg/=2;
27 }
28 while(gg%5==0){
29 gg/=5;
30 }
31 int cnt=geloutingyu(gg, i);
32 if(cnt>=num){
33 num=cnt;
34 cc=i;
35 }
36 }
37 cout << cc << endl;
38 }
39 return 0;
40 }