1 条题解
-
0
#include <iostream> using namespace std; int main() { int count = 0; // 统计输出的数字个数,用于控制每行输出10个 // [1] 遍历所有可能的平方根(1000²=1000000,3162²=9998244,是最大的七位平方数) for (int x = 1000; x <= 3162; ++x) { long long s = (long long)x * x; // 计算平方,用long long避免溢出 int flag[10] = {0}; // 标记数字0-9是否出现过(标记用flag) bool is_valid = true; // 标记当前平方数是否符合条件 // [2] 分解当前平方数的每一位,检查是否有重复 for (int i = 0; i < 7; ++i) { int d = s % 10; // 提取当前最后一位数字 if (flag[d] == 1) { is_valid = false; break; } flag[d] = 1; s /= 10; } // [3] 如果七位数字互不相同,输出该平方数 if (is_valid) { cout << (long long)x * x << " "; count++; // [4] 每输出10个数字换行 if (count % 10 == 0) { cout << endl; } } } return 0; }
- 1
信息
- ID
- 1203
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者