解题思路:
注意事项:
参考代码:
#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语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:694 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:1091 |
Tom数 (C语言代码)浏览:725 |
Tom数 (C语言代码)浏览:525 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:570 |
字符串比较 (C语言代码)浏览:681 |
青年歌手大奖赛_评委会打分 (C语言代码)浏览:2142 |
汽水瓶 (C语言代码)浏览:530 |
【偶数求和】 (C语言代码)浏览:432 |
P1044 (C++代码)浏览:492 |