解析: 只要方法想到,问题其实很简单。首先编写一个Mod函数判断一个很大的数能否被n整除,再不断的把由1组成的字符串往上磊,直到能被n整除。
时间的复杂度无法计算!
1 #include <stdio.h> 2 #include <string.h> 3 static int Mod(int n, char *p); 4 int main() 5 { 6 char buff[100000]; 7 int n, i; 8 while(scanf("%d", &n) == 1){ 9 i = 0; 10 while(1){ 11 buff[i] = '1'; 12 buff[i+1] = '\0'; 13 if(Mod(n,buff) == 0) 14 break; 15 i++; 16 } 17 printf("%d\n", i+1); 18 } 19 return 0; 20 } 21 /*求p mod n 的值*/ 22 static int Mod(int n, char *p) 23 { 24 int i, l, m = 0; 25 l = strlen(p); 26 for(i = 0; i < l; i++){ 27 m = m * 10 + (p[i] - '0'); /*下一位被除数数*/ 28 m = m % n; /*余数*/ 29 } 30 return m; 31 }