有一个6位的正整数,它有个很神奇的性质:
分别用2 3 4 5 6去乘它,得到的仍然是6位数,并且乘积中所包含的数字与这个6位数完全一样!只不过是它们的顺序重新排列了而已。
请计算出这个6位数。
这是一个整数,请通过浏览器提交答案,不要填写任何多余的内容(比如说明性的文字)
答案 (31分)
代码:
#include <iostream> #include <cstdio> #include <map> #include <cstring> #include <vector> #include <algorithm> #define inf 0x3f3f3f3f #define mod 999101 using namespace std; bool check(int k) { int t = k; int a[10] = {0}; while(t) { a[t % 10] ++; t /= 10; } for(int i = 6;i >= 2;i --) { int d = k * i; if(d >= 1000000) return false; int b[10]; for(int j = 0;j < 10;j ++) { b[j] = a[j]; } while(d) { if(b[d % 10] -- == 0) return false; d /= 10; } } return true; } int main() { for(int i = 100000;i < 1000000;i ++) { if(i * 2 >= 1000000) break; if(check(i)) { printf("%d\n",i); } } }
如果觉得有帮助,点个推荐啦~