这题该如何输出?
  • 板块灌水区
  • 楼主gaoyz1116
  • 当前回复17
  • 已保存回复17
  • 发布时间2024/7/15 19:08
  • 上次更新2024/7/15 20:01:12
查看原帖
这题该如何输出?
1344354
gaoyz1116楼主2024/7/15 19:08

【题目描述】

若一个数(首位不为零)从左向右读与从右向左读都是一样,我们就将其称之为回文数。

例如:给定一个整数56,将56加65(即把56从右向左读),得到121是一个回文数。

又如,对于整数87,

STEP1:87+78=165

STEP2:165+561=726

STEP3:726+627=1353

STEP4:1353+3531=4884

在这里的一步是指进行了一次加法运算,上例最少用了4步得到回文数4884。

写一个程序,给定整数M。求最少经过几步可以得到回文数。如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible”。

【输入格式】

一个整数M(M小于100位)。

【输出格式】

输出得到回文数的步骤。

最后一行输出步骤数,若30步内(包含30步)不能得到回文数,则输出“Impossible”。

【输入数据1】

87

【输出数据1】

87+78=165

165+561=726

726+627=1353

1353+3531=4884

4

【输入数据2】

1855413681

【输出数据2】

1855413681+1863145581=3718559262

3718559262+2629558173=6348117435

6348117435+5347118436=11695235871

11695235871+17853259611=29548495482

29548495482+28459484592=58007980074

58007980074+47008970085=105016950159

105016950159+951059610501=1056076560660

1056076560660+0660656706501=1716733267161

1716733267161+1617623376171=3334356643332

3334356643332+2333466534333=5667823177665

5667823177665+5667713287665=11335536465330

11335536465330+03356463553311=14692000018641

14692000018641+14681000029641=29373000048282

29373000048282+28284000037392=57657000085674

57657000085674+47658000075675=105315000161349

105315000161349+943161000513501=1048476000674850

1048476000674850+0584760006748401=1633236007423251

1633236007423251+1523247006323361=3156483013746612

3156483013746612+2166473103846513=5322956117593125

5322956117593125+5213957116592235=10536913234185360

10536913234185360+06358143231963501=16895056466148861

16895056466148861+16884166465059861=33779222931208722

33779222931208722+22780213922297733=56559436853506455

56559436853506455+55460535863495565=112019972717002020

112019972717002020+020200717279910211=132220689996912231

132220689996912231+132219699986022231=264440389982934462

264440389982934462+264439289983044462=528879679965978924

528879679965978924+429879569976978825=958759249942957749

958759249942957749+947759249942957859=1906518499885915608

1906518499885915608+8065195889948156091=9971714389834071699

Impossible

我的代码(没输出):

#include <bits/stdc++.h>
using namespace std;
int a[201],n,ans;
string s;
bool check()
{
	for(int i=1; i<=n/2; i++)
	if(a[i]!=a[n-i+1])
		return false;
	return true;
}
void jia()
{
	int b[201],c[201],m,jw=0;
	memset(b,0,sizeof(a));
	memset(c,0,sizeof(a));
	for(int i=1; i<=n; i++)
		b[i]=a[n-i+1];
	for(int i=1; i<=n; i++)
	{
		m=a[i]+b[i]+jw;
		c[i]=m%10;
		jw=m/10;
		}
		if(jw==1)
		{
		n+=1;
		c[n]=1;
	}
	for(int i=1;i<=n;i++)
		a[i]=c[i];
}
int main()
{
	cin>>s;
	n=s.size();
	for(int i=1; i<=n; i++)
		a[i]=int(s[n-i]-48);
	while(ans<=30)
	{
		if(check())
		{
		cout<<ans;
		return 0;
		}
		jia();
		ans++;
	}
	cout<<"Impossible";
}
2024/7/15 19:08
加载中...