标签:style blog http io ar os sp for on
Each line of the input file consists of a valid integer N. An input of zero is to terminate the program.
Your program have to display ALL qualifying pairs of numerals, sorted by increasing numerator (and, of course, denominator).
0
94736 / 01528 = 62
题目大意:输入一个正整数N,要求从小到大的输出形如abcde / fghij = n的表达式。
要求a~f为数字0~9,且不能重复(前边可有0)。
思路:如果将a b c d e f g h i j全部遍历的话,复杂度是10!,没有必要,直接枚举
f g h i j,然后算出a b c d e,去判断是否存在重复数字即可。
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> using namespace std; int main() { int sum,num,N,j; int a,b,c,d,e; int f,g,h,l,m; int x[10],ok = 0; while(~scanf("%d",&N) && N) { if(ok == 0) ok = 1; else printf("\n"); sum = 0; for(int i = 1234; i <= 98765; i++) { memset(x,0,sizeof(x)); a = i%10,b = i/10%10,c = i/100%10,d = i/1000%10,e = i/10000%10; num = i*N; if(num>98765) break; f = num%10,g = num/10%10,h = num/100%10,l = num/1000%10,m = num/10000%10; x[a]++,x[b]++,x[c]++,x[d]++,x[e]++; x[f]++,x[g]++,x[h]++,x[l]++,x[m]++; for(j = 0; j <= 9; j++) if(x[j]>1) break; if(j==10) { printf("%d%d%d%d%d / %d%d%d%d%d = %d\n",m,l,h,g,f,e,d,c,b,a,N); sum++; } else continue; } if(sum==0) printf("There are no solutions for %d.\n",N); } return 0; }
标签:style blog http io ar os sp for on
原文地址:http://blog.csdn.net/lianai911/article/details/41939879