题目链接
打表然后判断即可
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <vector>
#include <map>
#include <set>
#include <stack>
#include <queue>
using namespace std;
const int N=1010;
map<int,int> m;
bool judge(int n){
int k=10;
while(n/k){ //例如n=2347 ,k=10000就会跳出循环
if(m[n%k]&&m[n/k]){
return true;
}
k*=10;
}
return false;
}
int main(){
int a,b;
cin>>a>>b;
for(int i=1;i<=1000;i++){
m[i*i]=1;
}
for(int i=a;i<=b;i++){
if(m[i]&&judge(i)){
cout<<i<<endl;
}
}
return 0;
}