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的主要内容,如果未能解决你的问题,请参考以下文章

Division UVa725

UVA725

uva 725 Division

UVA 725 Division

UVA - 725 Division

UVA725