https://vjudge.net/problem/UVA-725
暴力入门经典题
题意:两个整数(等于5位)相除等于 给定的n
输出所有可能 要求这两个整数每位各不相同(0123456789全有)
这个题用暴力枚举做 做法通过优雅的暴力
a/b=n -> a=b*n
我们枚举a b a从1234开始枚举 而b*n最大就是98765
#include<algorithm> #include<iostream> #include<vector> #include<cstdio> #include<cstring> #include<cmath> #include<string> #include<ctime> #include<map> #include<stack> #include<set> #include<cstring> #include<sstream> #include<queue> using namespace std; typedef long long ll; typedef pair<int, int> pi; const int maxn = 1e3 + 5; int a, b, n, vis[10]; inline bool check(int m) { for (int i = 0; i < 5; i++) { if (vis[m % 10]) return 0; else vis[m % 10]++, m /= 10; } } int main() { int st = 0; while (~scanf("%d", &n) && n) { if (st) putchar('\n'); else st = 1; int ok = 0; for (b = 1234; (a = n * b) < 98765; b++) { memset(vis, 0, sizeof(vis)); if (check(a) && check(b)) printf("%05d / %05d = %d\n", a, b, n), ok = 1; } if (!ok) printf("There are no solutions for %d.\n", n); } return 0; }
Comments | NOTHING