85.回文數(shù)的形成
任取一個十進(jìn)制整數(shù),將其倒過來后與原來的整數(shù)相加,得到一個新的整數(shù)后重復(fù)以上步聚,則最終可得到一個回文數(shù)。請編程驗證。
*問題分析與算法設(shè)計
回文數(shù)的這一形成規(guī)則目前還屬于一個猜想,尚未得到數(shù)學(xué)上的證明。有些回文數(shù)要經(jīng)歷上百個步聚才能獲得。這里通過編程驗證。
題目中給出的處理過程很清楚,算法不需要特殊設(shè)計??砂凑疹}目的敘述直接進(jìn)行驗證。
*程序與程序注釋
#include
#define MAX 2147483647
long re(long int);
int nonres(long int s);
void main()
{
long int n,m;
int count=0;
printf("Please enetr a number optionaly:");
scanf("%ld",&n);
printf("The generation process of palindrome:\n");
while(!nonres((m=re(n))+n)) /*判斷整數(shù)與其反序數(shù)相加后是否為回文數(shù)*/
{
if(m+n>=MAX)
{
printf(" input error,break.\n");
break;
}
else
{
printf("[%d]:%ld+%ld=%ld\n",++count,n,m,m+n);
n+=m;
}
}
printf("[%d]:%ld+%ld=%ld\n",++count,n,m,m+n); /*輸出最后得到的回文數(shù)*/
printf("Here we reached the aim at last!\n");
}
long re(long int a) /*求輸入整數(shù)的反序數(shù)*/
{
long int t;
for(t=0;a>0;a/=10) /*將整數(shù)反序*/
t=t*10+a%10;
return t;
}
int nonres(long int s) /*判斷給定的整數(shù)是否是回文數(shù)*/
{
if(re(s)==s) return 1; /*若是回文數(shù)則返回1*/
else return 0; /*否則返回 0*/
}
任取一個十進(jìn)制整數(shù),將其倒過來后與原來的整數(shù)相加,得到一個新的整數(shù)后重復(fù)以上步聚,則最終可得到一個回文數(shù)。請編程驗證。
*問題分析與算法設(shè)計
回文數(shù)的這一形成規(guī)則目前還屬于一個猜想,尚未得到數(shù)學(xué)上的證明。有些回文數(shù)要經(jīng)歷上百個步聚才能獲得。這里通過編程驗證。
題目中給出的處理過程很清楚,算法不需要特殊設(shè)計??砂凑疹}目的敘述直接進(jìn)行驗證。
*程序與程序注釋
#include
#define MAX 2147483647
long re(long int);
int nonres(long int s);
void main()
{
long int n,m;
int count=0;
printf("Please enetr a number optionaly:");
scanf("%ld",&n);
printf("The generation process of palindrome:\n");
while(!nonres((m=re(n))+n)) /*判斷整數(shù)與其反序數(shù)相加后是否為回文數(shù)*/
{
if(m+n>=MAX)
{
printf(" input error,break.\n");
break;
}
else
{
printf("[%d]:%ld+%ld=%ld\n",++count,n,m,m+n);
n+=m;
}
}
printf("[%d]:%ld+%ld=%ld\n",++count,n,m,m+n); /*輸出最后得到的回文數(shù)*/
printf("Here we reached the aim at last!\n");
}
long re(long int a) /*求輸入整數(shù)的反序數(shù)*/
{
long int t;
for(t=0;a>0;a/=10) /*將整數(shù)反序*/
t=t*10+a%10;
return t;
}
int nonres(long int s) /*判斷給定的整數(shù)是否是回文數(shù)*/
{
if(re(s)==s) return 1; /*若是回文數(shù)則返回1*/
else return 0; /*否則返回 0*/
}

