打卡17
3.4回文数
方法1: 这个数据范围是很小的了,即便是从1遍历到256*256然后再判段每个数的位数才256*256*5时间复杂度,很小的也就6*10^6左右,然后判断前后是否对称即可;
方法2:这是比较简单的方法,从1-256平方,然后判断每个数是否对称即可,不会爆int。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int m[16],n,i,t,count=0;
long unsigned a,k;
cout<<"ans是"<<endl;
for(n=1;n<256;n++)
{
k=0;t=1;a=n*n;
for(i=0;a!=0;i++)
{
m[i]=a%10;a/=10;
}
for(;i>0;i--)
{
k+=m[i-1]*t;
t*=10;
}
if(k==a)cout<<' '<<n<<' '<<n*n<<endl;
}
}
3.5水仙花
#include<bits/stdc++.h>
using namespace std;
int main()
{
int hun,ten,ind,n;
for(n=100;n<1000;n++)
{
hun=n/100;
ten=(n-hun*100)/10;
ind=n%10;
if(n==pow(hun,3)+pow(ten,3)+pow(ind,3))cout<<n<<endl;
}
}