pat乙级 这题还有什么情况没考虑到

冷眼观world 2020-01-12 12:55:54
代码如下 #include <iostream>
#include <stdlib.h>
using namespace std;
int reverse(int a)
{
int ans = 0, b = 0;

while(a)
{
b = a % 10;
ans = ans * 10 + b;
a /= 10;
b = 0;
}

return ans;
}
int main()
{
int num = 0, cnt = 0;

cin >> num;
while(num != reverse(num))
{
cout << num << " + " << reverse(num) << " = " << num + reverse(num) << endl;
num = num + reverse(num);
cnt++;
if(cnt == 10)
break;
}
if(cnt == 10)
{
cout << "Not found in 10 iterations.";
} else if(num == reverse(num))
{
cout << num << " is a palindromic number.";
}

system("pause");
return 0;
}
...全文
162 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2020-01-12
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
char ary[2000];
int isCycle(char * s)
{
int len = strlen(s);
char *p = s;
char *q = p+len-1;
while( p < q ) {
if (*p == *q) p++, q--; else break;
}
return p>=q;
}

void Add(char * ary) {
char temp[2000] = "0";
strcpy ( temp, ary);
int i,j,len=strlen(ary);
printf("%s + ",ary);
for ( int i=len-1; i>=0; i-- ) printf("%c", ary[i]);
j=0; // 进位
for ( i=len-1; i>=0; i--) {
temp[i] = ary[i] + ary[(len-1)-i] + j - '0';
if ( temp[i]>'9') {temp[i]-=10; j=1;} else j=0;
}
if (j ) { // 最高位,也就是temp[0]还有进位
ary[0] = '1';
strcpy(ary+1, temp);
} else
strcpy(ary, temp);
printf(" = %s\n", ary);
}
int main()
{
gets(ary);
while ( !isCycle(ary) ){
Add(ary);
}
printf("%s is the answer!", ary);
return 0;
}

应该可以跑
冷眼观world 2020-01-12
  • 打赏
  • 举报
回复
引用 3 楼 寻开心的回复:
你要用字符串来保存他们并完成加法计算,换算法吧
那岂不是要模拟加法运算
寻开心 2020-01-12
  • 打赏
  • 举报
回复
你要用字符串来保存他们并完成加法计算,换算法吧
冷眼观world 2020-01-12
  • 打赏
  • 举报
回复
引用 1 楼 真相重于对错的回复:
计算机整数最大能存多少位的整数? 1000位的整数可以放进去吗?
1000位我该以为是数字1000 这也太大了吧
真相重于对错 2020-01-12
  • 打赏
  • 举报
回复
计算机整数最大能存多少位的整数? 1000位的整数可以放进去吗?

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧