例题7-1 除法(Division, UVa 725)

来源:互联网 发布:淘宝美工字体 编辑:程序博客网 时间:2024/05/29 08:38
部分枚举对象可以求出来,由此来减少枚举量。
#include <iostream>#include <string>#include <vector>#include <stack>#include <queue>#include <deque>#include <set>#include <map>#include <algorithm>#include <sstream>#include <utility>#include <cstring>#include <cstdio>#include <cstdlib>#include <ctime>#include <cmath>#include <cctype>#define CLEAR(a, b) memset(a, b, sizeof(a))#define IN() freopen("in.txt", "r", stdin)#define OUT() freopen("out.txt", "w", stdout)#define LL long long#define maxn 105#define maxm 10005#define mod 1000000007#define INF 1000000007#define eps 1e-5#define PI 3.1415926535898#define N 26using namespace std;//-------------------------CHC------------------------------//vector<int> v;bool check(int a, int b) {if (a >= 100000) return false;char x[6], y[6];int vis[10];CLEAR(vis, 0);sprintf(x, "%d", a);sprintf(y, "%05d", b);int i = 0;while (x[i]) vis[x[i++] - '0']++;i = 0;while (y[i]) vis[y[i++] - '0']++;bool ok = true;for (int i = 0; i < 10; ++i)if (vis[i] != 1) ok = false;return ok;}int main() {int n, t = 0;while (cin >> n && n) {if (t++)putchar('\n');v.clear();bool ok = false;for (int i = 1234; i <= 50000; ++i) {if (check(i * n, i))ok = true, v.push_back(i);}if (ok) {for (int i = 0; i < v.size(); ++i)printf("%d / %05d = %d\n", v[i]*n, v[i], n);}else printf("There are no solutions for %d.\n", n);}return 0;}

原创粉丝点击