标签:
原题:
Description
Write a program that finds and displays all pairs of 5-digit numbers that between them use the digits 0 through 9once each, such that the first number divided by the second is equal to an integer N, where . That is,
abcde / fghij =N
where each letter represents a different digit. The first digit of one of the numerals is allowed to be zero.
Your output should be in the following general form:
xxxxx / xxxxx =N
xxxxx / xxxxx =N
.
.
In case there are no pairs of numerals satisfying the condition, you must write ``There are no solutions for N.". Separate the output for two different values of N by a blank line.
61 62 0
There are no solutions for 61. 79546 / 01283 = 62 94736 / 01528 = 62
我的代码:
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int main() { int n, kase = 0; char buf[99]; while (scanf("%d", &n) == 1 && n) { int cnt = 0; if (kase++) printf("\n"); for (int fghij = 1234;; fghij++) { int abcde = fghij * n; sprintf(buf, "%05d%05d", abcde, fghij); if (strlen(buf) > 10) break; sort(buf, buf + 10); bool ok = true; for (int i = 0; i < 10; i++) if (buf[i] != ‘0‘ + i) ok = false; if (ok) { cnt++; printf("%05d / %05d = %d\n", abcde, fghij, n); } } if (!cnt) printf("There are no solutions for %d.\n", n); } return 0; }
标签:
原文地址:http://www.cnblogs.com/shawn-ji/p/4696500.html