回文数猜想
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7399 Accepted Submission(s): 4533
特别说明:输入的数据保证中间结果小于2^31。
27228 37649
3 27228--->109500--->115401--->219912 2 37649--->132322--->355553#include<iostream>
using namespace std;
int fun1(long long num); //功能1,看到自己输入数字的位数
int fun2(long long num); //功能2,找出该数的相反数
int fun3(int num); //功能3,实现相反数时,需要乘以的10的num次方。
int main()
{
long long num;
long long a,b;
long long t; //定义t,赋初值。
int ee=0;
while(cin>>num)
{
ee=0;
a=fun2(num);
t=num;
b=fun2(t);
while(num!=a) //我在这里用了两次while,一次用来增加次数,
//一次用来输出过程,不然很难达到题目要求的输出格式
{
ee++;
num=num+a;
a=fun2(num);
}
cout << ee << endl;
while(t!=b)
{
cout<<t<<"--->";
t=t+b;
b=fun2(t);
}
cout<<t<<endl;
}
return 0;
}
int fun1(long long num)
{
int t=0;
while(num)
{
num/=10;
t++;
}
return t;
}
int fun2(long long num)
{
int a=fun1(num);
int Num=0;
while(a--)
{
int t=num%10;
Num+=t*fun3(a);
//cout << Num<< endl;
num/=10;
}
return Num;
}
int fun3(int num)
{
int sum=1;
while(num--)
{
sum=sum*10;
}
return sum;
}