代码调试版本:
using namespace std;
const int MAX=100000;
#include<bits/stdc++.h>
int main(){
int N;
cin>>N;
int flag=0;
int A[MAX],B[MAX];
int c=0;
while(flag==0){
B[c]=N;
int p=0;
int copyN=N;
cout<<"当前N值:"<<copyN<<endl;
cout<<"Record 数组A:";
while(N!=0){
int t = N%10;
A[p++] = t;
cout<<"A["<<p-1<<"]="<<A[p-1]<<" ";
N=N/10;
}
cout<<endl;
int tag=0;
int begin=0,end=p-1;
while(tag==0){
if(begin>=end){
break;
}
if(A[begin]!=A[end])
{
tag=1;
break;
}
begin++;
end--;
}
cout<<"当前tag值:"<<tag<<endl;
cout<<"计算verse过程:"<<endl;
if(tag==1){
int verse=0;
for(int i=p-1;i>=0;i--)
{
int t=i;
int temp=A[(p-1)-i];//调试错误记录:temp=A[i] 这样求出的verse=N 改为temp=A[(p-1)-i]即可.
while(t--){
temp=temp*10;
}
cout<<temp<<" ";
verse+=temp;
}
cout<<"verse值:"<<verse<<endl;
N=verse+copyN;
cout<<"变换后的值:"<<N<<endl;
c++;
cout<<"变换次数:" <<c<<endl;
}
if(tag==0){
flag=1;
}
}
cout<<"变换次数"<<c<<endl;
for(int i=0;i<=c;i++){
cout<<B[i];
if(i!=c){
cout<<"--->";
}
}
return 0;
}
AC版:
using namespace std;
const int MAX=100000;
#include<bits/stdc++.h>
int main(){
int N;
cin>>N;
int flag=0;
int A[MAX],B[MAX];
int c=0;
while(flag==0){
B[c]=N;
int p=0;
int copyN=N;
while(N!=0){
int t = N%10;
A[p++] = t;
N=N/10;
}
int tag=0;
int begin=0,end=p-1;
while(tag==0){
if(begin>=end){
break;
}
if(A[begin]!=A[end])
{
tag=1;
break;
}
begin++;
end--;
}
if(tag==1){
int verse=0;
for(int i=p-1;i>=0;i--)
{
int t=i;
int temp=A[(p-1)-i];//调试错误记录:temp=A[i] 这样求出的verse=N 改为temp=A[(p-1)-i]即可.
while(t--){
temp=temp*10;
}
verse+=temp;
}
N=verse+copyN;
c++;
}
if(tag==0){
flag=1;
}
}
cout<<c<<endl;
for(int i=0;i<=c;i++){
cout<<B[i];
if(i!=c){
cout<<"--->";
}
}
return 0;
}