解题思路:
注意事项:
参考代码:
#include<cstdio> #include<cstring> char s[201]; int a[401],top; //数组a为高精度数组,top为它的长度 inline bool judge() //判断一个数是否回文 { int t=top/2; for (int i=0;i<=t;++i) if (a[i]!=a[top-i]) return true; return false; } int main() { int n,step=0; scanf("%d%s",&n,s); top=strlen(s)-1; for (int i=0;i<=top;++i) //将字符转化为数字 if (s[i]>='0'&&s[i]<='9') a[top-i]=s[i]-'0'; else a[top-i]=s[i]-55; //注意16进制 while (judge()) { if (step>30) //如果超过三十步就直接结束程序 return puts("Impossible!")&0; for (int i=0;i<=top;++i) //高精度加法不是很习惯边算边进位,习惯算完在进位 if (top-i>=i) a[i]+=a[top-i]; else a[i]=a[top-i]; //因为最后算出来的数如果不进位的话就一定是回文的,所以数组的后一半直接复制前一半就好了 for (int i=0;i<=top;++i) //进位 if (a[i]>=n) a[i+1]++,a[i]-=n; if (a[top+1]) //注意如果首位进位,长度要增加 top++; step++; } printf("STEP=%d\n",step); return 0; }
0.0分
1 人评分
C语言训练-亲密数 (C++代码)浏览:798 |
C语言考试练习题_排列 (C++代码)浏览:1112 |
C二级辅导-阶乘数列 (C语言代码)浏览:891 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:741 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:569 |
不容易系列 (C语言代码)浏览:702 |
C语言训练-阶乘和数* (C语言代码)-------- 呆板写法浏览:1396 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:956 |
WU-整数平均值 (C++代码)浏览:1307 |
最小公倍数 (C语言代码)浏览:1105 |