top1编程
← 返回题目
题解

【基础】七位完全平方数

1 条题解

  • 0
    @ 2026-7-29 0:19:28
    #include <iostream>
    #include <cstring>
    #include <vector>
    using namespace std;
    
    int main() {
        vector<int> result;
    
        // 枚举从 1000 到 3162
        for (int i = 1000; i <= 3162; i++) {
            long long square = (long long)i * i;
            
            // 确保是七位数(1000000 ~ 9999999)
            if (square < 1000000 || square > 9999999) continue;
    
            // 检查各位数字是否互不相同
            bool used[10] = {false};
            bool valid = true;
            long long temp = square;
    
            // 提取每一位数字
            while (temp > 0) {
                int digit = temp % 10;
                if (used[digit]) {
                    valid = false;
                    break;
                }
                used[digit] = true;
                temp /= 10;
            }
    
            if (valid) {
                result.push_back(square);
            }
        }
    
        // 输出:每行10个,空格分隔
        for (int i = 0; i < result.size(); i++) {
            cout << result[i];
            if (i == result.size() - 1) {
                cout << endl;
            } else {
                if ((i + 1) % 10 == 0) {
                    cout << endl;
                } else {
                    cout << " ";
                }
            }
        }
    
        return 0;
    }
    
    • 1