#include <bits/stdc++.h> using namespace std; bool sb(int n){ n*=n; int i=0,a[10]={0}; while(n){ if(a[n%10]!=0){ break; return false; } a[n%10]=1; n/=10; ++i; } if(i==7){ return true; } return false; } int main() { int x,y; cin>>x>>y; for(int i=x;i<=y;i++){ if(sb(i)){ cout<<i<<endl; } } return 0; }

1 条评论

  • @ 2026-2-4 15:07:07
    #include <iostream>
    using namespace std;
    
    // 检查平方数是否是7位数
    bool is7Digits(long long num) {
        return num >= 1000000 && num <= 9999999;
    }
    
    // 检查7位数的各位数字是否互不相同
    bool allDigitsDifferent(long long num) {
        int digits[7];  // 存储7位数字
        bool used[10] = {false};  // 标记0-9数字是否已使用
        
        // 提取每一位数字
        for (int i = 0; i < 7; i++) {
            digits[i] = num % 10;
            num /= 10;
            
            // 检查该数字是否已使用过
            if (used[digits[i]]) {
                return false;  // 有重复,不符合条件
            }
            used[digits[i]] = true;  // 标记该数字已使用
        }
        
        return true;  // 所有数字都不重复
    }
    
    int main() {
        int x, y;
        cin >> x >> y;
        
        // 由于平方是7位数,原数应该在1000到3162之间
        // 但题目给定x,y在1000-9999之间,我们只需判断平方是否为7位数即可
        
        for (int i = x; i <= y; i++) {
            long long square = (long long)i * i;  // 计算平方
            
            // 检查平方是否为7位数且各位数字互不相同
            if (is7Digits(square) && allDigitsDifferent(square)) {
                cout << i << endl;  // 输出原数
            }
        }
        
        return 0;
    }
    

    这是真的

    👍 5
    • 1