标题
回文数
类别
数组
时间限制
2S
内存限制
1000Kb
问题描述
若一个非负整数其各位数字按照正反顺序读完全相同,则称之为回文数,例如12321。
判断输入的整数是否是回文数。若是,则输出该整数各位数字之和,否则输出no。
输入说明
输入为一个整数n,0<=n<1000000000。
输出说明
若该整数为回文数,则输出整数各位数字之和,否则输出no。
输入样例
样例1输入
131
样例2输入
24
输出样例
样例1输出
5
样例2输出
no
#include#include int main (){ int n,n1,n2,m=0,j,p,i,a=1,z=1,s=0,k,d,sum=0,k1,k2; scanf("%d",&n); n1=n; n2=n; p=1+log10(n); i=p+1; j=p-1; if(p%2==0) { do{ k1=pow(10,j); a=n1/k1; n1=n1%k1; j=j-1; z=n2%10; n2=n2/10; if(a==z){s=s+1;} else s=s; } while(j>=p/2); if(p==2*s) { k=n; do{d=pow(10,i); sum=sum+n/d; m=m+(n/d)*d; n=k-m; i=i-1; }while(i>=0); printf("%dn",sum); }else printf("no"); }if(p%2!=0) { do{ k1=pow(10,j); a=n1/k1; n1=n1%k1; j=j-1; z=n2%10; n2=n2/10; if(a==z){s=s+1;} else s=s; } while(j>p/2); if(p==2*s+1) { k=n; do{d=pow(10,i); sum=sum+n/d; m=m+(n/d)*d; n=k-m; i=i-1; }while(i>=0); printf("%dn",sum); }else printf("no");} return 0; }
较为繁琐,但用的方法比较基础,容易理解。(因为是大一新生才学的)



