# 排它平方数 203879 * 203879 = 41566646641 这有什么神奇呢?仔细观察,203879 是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。 具有这样特点的6位数还有一个,请你找出它! 再归纳一下筛选要求: 1. 6位正整数 2. 每个数位上的数字不同 3. 其平方数的每个数位不含原数字的任何组成数位 以下程序实现了这一功能,请你补全以下空白处内容: ```c #include using namespace std; int main() { int num[10], flag; for (long long i = 123456; i <= 987654; i++) { long long a = i; long long b = i * i; memset(num, 0, sizeof(num)); flag = 1; while (a) { _________________; } if (flag) { while (b) { if (num[b % 10]) { flag = 0; break; } b /= 10; } if (flag) cout << i << endl; } } return 0; } ``` 提示: ```json 0的平方为0 1的平方为1 5的平方为5 6的平方为6 以上这4个数字都不能作为原数字的最后一位,可以在最后一位排除 且第一位不能为0 ``` ## 答案 ```c if (num[a % 10]) { flag = 0; break; } num[a % 10]++; a /= 10; ``` ## 选项 ### A ```c if (num[a % 10]) { flag = 0; continue; } num[a % 10]++; a /= 10; ``` ### B ```c if (num[a % 10]) { flag = 0; continue; } num[a % 10]++; a %= 10; ``` ### C ```c if (num[a % 10]) { flag = 0; break; } num[a % 10]++; a %= 10; ```