神奇6位数

有一个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);
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/8023spz/p/10394946.html
今日推荐