标签:
输入n(10 <= n <= 1000)
输出<=n的数中倒数循环节长度最长的那个数
10
7
思路:转换为求最小的k使10^k ≡1 (mod n)。就是一开始的余数是1。
1 #include <iostream> 2 #include <algorithm> 3 #include <cmath> 4 #include <vector> 5 #include <string> 6 #include <cstring> 7 #include<stdlib.h> 8 #include<stdio.h> 9 using namespace std; 10 int main(void) 11 { 12 int n; 13 scanf("%d",&n); 14 int minn = 0; 15 int i,j; 16 int maxx = 0; 17 for(i = 3 ; i <=n ; i++) 18 { 19 int t = 1;int flag = 0; 20 for(j = 1; j <= i ; j++) 21 { 22 t*=10;//if(i==7)printf("%d\n",t); 23 if(t%i==0) 24 break; 25 else if(t%i == 1) 26 { 27 flag = j; 28 break; 29 } 30 t%=i; 31 } 32 if(flag > minn) 33 { 34 minn = flag; 35 maxx = i; 36 } 37 } 38 printf("%d\n",maxx); 39 return 0; 40 }
标签:
原文地址:http://www.cnblogs.com/zzuli2sjy/p/5811779.html