链接
传送门
题意
有\(s_1,s_2,n\)三个整数,每个整数的各个位上的数字都不相同,且满足\(s_1/s_2=n\)。给出\(n\),输出满足条件的算式。
思路 :枚举\(s_2\),计算出\(s_1\),然后检验是否满足条件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| #include <cstdio> #include <cstring> #include <algorithm> using namespace std;
typedef long long LL; const LL maxn = 9876543210; bool vis[10];
bool check(LL x) { memset(vis, 0, sizeof vis); while (x) { int tmp = x % 10; if (vis[tmp]) { return false; } vis[tmp] = true; x /= 10; } return true; }
int main() { int t; scanf("%d", &t); while (t--) { LL n; scanf("%lld", &n); for (LL i = 1, x = n; x <= maxn; ++i, x += n) { if (check(i) && check(x)) { printf("%lld / %lld = %lld\n", x, i, n); } } if (t) { puts(""); } } return 0; }
|