UVA_725: Division

来源:互联网 发布:linux连接数据库命令 编辑:程序博客网 时间:2024/04/30 15:52

Description

Write a program that finds and displays all pairs of 5-digit numbers thatbetween them use the digits0 through 9 once each, such that thefirst number divided by the second is equal to an integerN, where $2\le N \le 79$.That is,
abcde / fghij = Nwhere each letter represents a different digit. The first digit of one ofthe numerals is allowed to be zero.

Input

Each line of the input file consists of a valid integer N. An input of zero is to terminatethe program.

Output

Your program have to display ALL qualifying pairs of numerals, sorted byincreasing numerator (and, of course, denominator).Your output should be in the following general form:
xxxxx / xxxxx = Nxxxxx / xxxxx = N..
In case there are no pairs of numerals satisfying the condition, you mustwrite ``There are no solutions forN.". Separate the output for twodifferent values of N by a blank line.

Sample Input

61620

Sample Output

There are no solutions for 61.79546 / 01283 = 6294736 / 01528 = 62


分析:大水题啊,暴力破解,b从1234到50000,a=b×n,然后检查a和b的合法性(wa了7发,简直不敢想,就是那个点,点啊!)


#include <cstdio>using namespace std;int valid(int a, int b){int va[10] = {0};if(a<10000)va[0]=1;while(a){va[a%10]=1;a/=10;}while(b){va[b%10]=1;b/=10;}for(int i=0; i<10; i++)if(!va[i])return 0;return 1;}int main(){int n;int first = 1;while(~scanf("%d",&n)&&n){int solu = 0;if(first)first=0;else putchar('\n');for(int i=1234; i<50000; i++){int fuck = i*n;if(fuck>98765)break;if(valid(i,fuck)){printf("%05d / %05d = %d\n",fuck,i,n);solu = 1;}}if(!solu)printf("There are no solutions for %d.\n",n);//这里有个点啊!}    return 0;}


0 0
原创粉丝点击