POJ-1426 Find The Multiple
题意:给定一个N(1-200),求一个不超过100位的十进制的数,且这个数字只由0和1组成,要求输出一个这样的数。
解法:直接用long long递归处理即可。
代码如下:
#include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <string> #include <map> #include <queue> #include <vector> #include <stack> #include <list> #include <set> using namespace std; int N; long long ret[205]; long long deal(long long t, int x) { if (t < 0) return -1; if (t % x == 0) return t; long long ret = deal(t * 10, x); if (ret != -1) return ret; return deal(t * 10 + 1, x); } int main() { for (int i = 1; i <= 200; ++i) { ret[i] = deal(1, i); } while (scanf("%d", &N), N) { printf("%lld\n", ret[N]); } return 0; }