利克瑞爾數


【問題描述】利克瑞爾數(Lychrel Number)指的是將該數各數位逆序翻轉后形成的新數相加,並將該過程反復迭代后,結果永遠無法是一個回文數的自然數。57就是一個非利克瑞爾數:57+75=132, 132+231=363,363是一個回文數。請編寫程序,輸入一個自然數(非利克瑞爾數),請計算其最終的回文數是多少及每次迭代過程。注意:假設輸入的整數和中間產生的整數都不超過int數據類型的表示范圍。

【輸入形式】從標准輸入讀入一個正整數。

【輸出形式】在標准輸出上輸出迭代過程和最終的回文數。分行輸出每次迭代過程:先輸出迭代次數(從1開始計數),后跟英文冒號:,然后是兩數相加等於某數的等式,其中的符號都是英文符號,沒有空格。在最后一行輸出最終得到的回文數。若輸入的整數本身就是回文數,則不輸出任何迭代過程,直接輸出該回文數。

【樣例輸入】109

【樣例輸出】

1:109+901=1010
2:1010+101=1111
1111

【樣例說明】

輸入:

909

輸出:

909

c++代碼:

#include <iostream>

using namespace std;

int main(){

       int a,b,c,i,e;

       int item;

       int n=0;

       int num;

       int d=0;

       int f=0;

       cin>>num;

       a=num;

       b=0;

       while(a!=0){

              c=a%10;

              b=b*10+c;

              a=a/10;

       }

       if(num==b){

              cout<<num<<endl;

       }else{

              for(item=1;n==d;item++){

              n=num+b;

              i=n;

              cout<<item<<":"<<num<<"+"<<b<<"="<<n<<endl;

              while(i!=0){

                     e=i%10;

                     d=d*10+e;

                     i=i/10;

                     f=d+n;

                    

       }

              }cout<<item<<":"<<n<<"+"<<d<<"="<<f<<endl;

              cout<<f<<endl;

              }

       return 0;

}

java代碼:

修改之后:

package fuxi;
import java.util.Scanner;
public class W {
static int nixu(int n) {
int g,r=0,a=n;
while(a!=0) {
g=a%10;//g是個位數
r=r*10+g;//r是逆序數,如果逆序數等於n,即驗證數是回文數
a=a/10;//a從百十個一一遍歷,算到0為止
}
return r;
}
public static void main(String[] args) {
Scanner inScanner=new Scanner(System.in);
int n=inScanner.nextInt();
int r=nixu(n);
if(r==n) {System.out.print(n);}//輸出回文數,比如909
/*輸入109
1:109+901=1010
2:1010+101=1111
1111*/
else
{int p=n+r;//n是原數109,r是逆序數901,p是1010
int i=1;
while(p!=nixu(p))//需要判斷第一次迭代之后的數是否為回文數,是就while循環結束直接輸出
{
System.out.println(i+":"+n+"+"+r+"="+p);//1:109+901=1010
n=p;
r=nixu(p);
i++;
break;
}
System.out.println(i+":"+n+"+"+r+"="+(n+r));//2:1010+101=1111

System.out.println(n+r);
}
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM