问题描述
混乘数字的定义如下:
对于一个正整数 n
,如果存在正整数 a
和 b
,使得:
n = a × b
且 a
与 b
的十进制数位中每个数字出现的次数之和,与 n
中对应数字出现的次数相同,则称 n
为混乘数字。
示例
- 对于正整数
n = 126
,存在a = 6
,b = 21
,满足条件,因此126
是一个混乘数字。 - 对于正整数
n = 180225
,存在a = 225
,b = 801
,满足条件,因此180225
是一个混乘数字。
任务
请你帮助计算出 1 ∼ 1000000
(含)之间一共有多少个数字是混乘数字。
答案提交
这是一道结果填空题,你只需要算出结果后提交即可。
- 本题的结果为一个整数
- 在提交答案时只填写该整数
- 填写多余内容将无法得分
c++代码
#include<bits/stdc++.h>
#include<stdio.h>using namespace std;bool mycan(int b, int c, vector<int> aa) {vector<int> bb(10, 0), cc(10, 0);if (b == 0) bb[0]++;while(b > 0) {bb[b % 10]++;b /= 10;}if (c == 0) cc[0]++;while(c > 0) {cc[c % 10]++;c /= 10;}for (int i = 0; i <= 9; i++) {if (aa[i] != bb[i] + cc[i]) return false;}return true;
}int main() {/*int ans = 0;for (int i = 1; i <= 1000000; i++) {int x = (int)sqrt(i);vector<int> aa(10, 0);if (i == 0) aa[0]++;int a = i;while(a > 0) {aa[a % 10]++;a /= 10;}for (int j = 1; j <= x; j++) {if (i % j == 0 && mycan(j, i / j, aa)) {ans++;break;}}}cout << ans;*/cout << 590;return 0;
}//by wqs