#include<iostream> using namespace std; int main(){ int a[50],a_count=0; int b[10]; for(int n=1;n<256;n++){ for(int i=0;i<10;i++) b[i]=0; int temp=n*n,count=0; while(temp>0){ b[count++]=temp%10; temp/=10; } bool judge=1; for(int i=0;i<count/2;i++){ if(b[i]!=b[count-1-i]){ judge=0; break; } } if(judge==1) a[a_count++]=n; } for(int i=0;i<a_count;i++) cout<<a[i]<<endl; }
public class Main { public static void main(String[] args) { //注意i=1起始,个人觉得i=0也符合 for (int i = 1; i < 256; i++) { String s = String.valueOf(i * i); int j=0; int k=s.length()-1; while (j<=k){ if (s.charAt(j)==s.charAt(k)){ j++;k--; }else break; } if (j>k) System.out.println(i); } } }
#include<stdio.h> #include<string.h> int main() { int m,n,i,j,k; int a[5]; int flag=0; for(i=1;i<=256;i++) { n=i*i; for(j=0;;) { while(n/10!=0) { a[j]=n%10; n=n/10; j++; } if(n/10==0) { a[j]=n; break; } } for(k=0;k<=j/2;k++) { if(a[k]!=a[j-k]) { flag=1; break; } } if(flag==0) printf("%d\n",i); flag=0; } return 0; }
#include<iostream> #include<vector> using namespace std; bool fun(int k) { vector<int> v; //存储逆序数据 int m=k; int ans =0; while(m) { v.push_back(m%10); m=m/10; } for(vector<int>::iterator it=v.begin();it!=v.end();it++) { ans=ans*10+(*it); } if(ans==k) return true; else return false; } int main() { for(int i=1;i<=256;i++) { int k=i*i; bool flag=fun(k); if(flag) cout<<i<<endl; } return 0; }这题不让输入数据,直接计算1-256的数据就行,这题目真坑人,说也说不清楚。