uva725
Posted fzfn5049
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uva725相关的知识,希望对你有一定的参考价值。
帮学弟改的一段代码,我觉得学弟思路和我做这题的思路不一样,值得看一看...虽然是个水题...
注意点:这个题目我一开始写的时候PE了四次,后来仔细修改,发现,这个题目对我们输出空格的检测异常严格!!!
第一点:题目要求每个样例输出一个空行,按照我们正常的思路,在代码的最后写上换行符号就可以了,但是这样做的后果就是在你输出最后一个样例的时候,你会多出一个空行,这就是导致pe的原因....
其他的话没什么难点,这份代码和我的不同的是我是用sprintf进行的字符串转换,他是用的数组下标来进行的检测,思路有所不同!
1 #include<stdio.h> 2 #include<string.h> 3 int a[15]; 4 int n[85]; 5 int main() 6 { 7 int N,c=0; 8 int cases = 0; 9 //freopen("/Users/luckybird/Desktop/examples/data.rtf","w",stdout); 10 while(~scanf("%d",&N)){ 11 c = 0;//你这个c没有初始化的话(初始化没有放在循环里面,第一次是0,第二次就是1,第三次就是2...当然就会让你的代码陷入死循环) 12 if (N != 0) n[++c] = N; 13 if (N == 0) break; 14 if( cases != 0) 15 printf("\n"); 16 cases++; 17 for (int p = 1; p <= c; p++) { 18 int ff = 0; 19 if (p != 1) printf("\n");//p == 2的时候直接跳出了循环,不是很清楚你这个表达是干嘛的... 20 for (int i = 12345; i <= 98765; i++) { 21 memset(a, 0, sizeof(a)); 22 int f = 1; 23 int j = i / n[p]; 24 if (i % j != 0) continue; 25 a[i / 10000] += 1; 26 a[i / 1000 % 10] += 1; 27 a[i / 100 % 10] += 1; 28 a[i / 10 % 10] += 1; 29 a[i % 10] += 1; 30 a[j / 10000] += 1; 31 a[j / 1000 % 10] += 1; 32 a[j / 100 % 10] += 1; 33 a[j / 10 % 10] += 1; 34 a[j % 10] += 1; 35 for (int k = 0; k <= 9; k++) 36 if (a[k] > 1) f = 0; 37 if (f) { 38 if (ff != 0) printf("\n");//这个是为了每行之间输出换行 39 printf("%d / ", i); 40 if (j < 10000) printf("0"); 41 printf("%d = %d", j, n[p]); 42 ff = 1; 43 } 44 } 45 if(ff) printf("\n"); 46 47 if (!ff) printf("There are no solutions for %d.\n", n[p]); 48 //if (p != c) printf("\n");//这p永远等于c吧.... 49 50 } 51 } 52 return 0; 53 }
以上是关于uva725的主要内容,如果未能解决你的问题,请参考以下文章