网站制作收费明细表,帝国cms仿站工具,手机制作小程序软件的app,旧房改造室内装修设计公司本可以java大数就能搞定的问题 当时用java写完答案明明对了提交总是答案错误 很是无语
题意
任给我们一个数 让我们对这个数进行翻转相加 如果加和是个回文数 就找到了程序出口 如果不是继续迭代 输出过程 如果迭代10次没有找到就输出特定信息
分析
就是模拟高精度加…本可以java大数就能搞定的问题 当时用java写完答案明明对了提交总是答案错误 很是无语
题意
任给我们一个数 让我们对这个数进行翻转相加 如果加和是个回文数 就找到了程序出口 如果不是继续迭代 输出过程 如果迭代10次没有找到就输出特定信息
分析
就是模拟高精度加法 场上没想清楚为什么要那么加 两个数相加只可能比原数多进一位 完全可以用正序和逆序两个数组里一加 不必管 低位高位 对齐的情况 因为是一个数与自己的逆序相加 所以一定位数相同且从低位加还是从高位加结果相同 如果是不同数的加法或是乘法 我们需要从两个数的最高位置 向低位运算 因为高位为原数据的低位 所以最后再反向输出
code
#includebits/stdc.h
using namespace std;
char a[1010],b[1010];
bool check(char aa[]){int len strlen(aa);for(int i0;ilen-1-i;i){if(aa[i]!aa[len-1-i])return 0;}return 1;
}//回文检验
int main()
{gets(a);bool f0;int c0;while(!check(a)){if( c10 ){printf(Not found in 10 iterations.);f1;break;}int lena strlen(a)-1,tag0;for(int ilena;i0;i--){b[tag] a[i];}//将原数逆序 b[tag] \0;printf(%s %s,a,b);int i,y 0;for(i0;ilena;i){//模拟加法int dig (a[i]-0)(b[i]-0)y;a[i] 0dig%10;if(dig9)y1;else y 0;}if(y)a[i] 0y,a[i] \0;//余数处理else a[i] \0;//行尾结束控制i--;//找回重点for(int j0;ji-j;j){//把顺序换回来swap(a[j],a[i-j]);} printf( %s\n,a);c;}if(!f)printf(%s is a palindromic number.,a);return 0;
}