Board logo

標題: 310 函式與陣列 (阿姆斯壯數) [打印本頁]

作者: 陳楷翔    時間: 2023-8-26 10:53     標題: 310 函式與陣列 (阿姆斯壯數)

本帖最後由 鄭繼威 於 2024-1-20 16:20 編輯

1. 題目說明:
請依下列題意進行作答,使輸出值符合題意要求。

2. 設計說明:
請撰寫一程式,包含名為compute()的函式,接收主程式傳遞的一個整數n(0 < n < 1000),compute()輸出所有小於n的阿姆斯壯數並回傳總和至主程式輸出。

阿姆斯壯數的定義:若為k位數的正整數,則其所有位數數字的k次方與該數相等。

補充說明:
阿姆斯壯數(Armstrong number),又稱自戀數(Narcissistic number)(因為各數字 n 次方後加總又等於本身,感覺很自戀?)。
例如 153 可以滿足 1³ + 5³ + 3³ = 153,153 就是個阿姆斯壯數,阿姆斯壯數有 88 個,最大為 39 位數的 115132219018763992565095597973971522401,已證實超過 39 位數不存在阿姆斯壯數。

提示:若使用 Java 語言答題,請以「JP」開頭命名包含 main 靜態方法的 class,評測系統才能正確評分。

3. 輸入輸出:
輸入說明
一個整數n(0 < n < 1000)

輸出說明
所有小於n的阿姆斯壯數與其總和

範例輸入
999
範例輸出
1
2
3
4
5
6
7
8
9
153
370
371
407
1346
  1. import java.util.Scanner;
  2. public class JP310 {
  3.     static int compute(int n)
  4.     {
  5.         int total=0;
  6.         for(int i=1; i<n; i++)
  7.         {
  8.             int sum=0;
  9.             String str=String.valueOf(i);// int to string
  10.             int len=str.length();//length() 得到字串長度
  11.             for(int j=0; j<len; j++)
  12.             {
  13.                 int t=str.charAt(j)-'0';//將各個數字轉換為int
  14.                 sum+=Math.pow(t, len);//並進行自身位數次方的動作
  15.             }
  16.             if(sum==i)//判斷是否為阿姆斯壯數
  17.             {
  18.                 System.out.println(i);
  19.                 total+=i;
  20.             }
  21.         }
  22.         return total;
  23.     }
  24.     public static void main(String[] args) {
  25.         Scanner s=new Scanner(System.in);
  26.         int n=s.nextInt();
  27.         System.out.println(compute(n));
  28.     }
  29. }
複製代碼
  1. import java.util.Scanner;


  2. public class Ch01 {

  3.         public static int compute(int m)        //999
  4.         {
  5.                 int total=0;
  6.                 //for 1~998
  7.                 for(int n=1;n<m;n++)
  8.                 {
  9.                         //int->string
  10.                         String str=Integer.toString(n);        //"153"
  11.                        
  12.                         double sum=0;
  13.                         for(int i=0;i<str.length();i++)
  14.                         {
  15.                                 sum=sum+Math.pow(str.charAt(i)-48,str.length());
  16.                         }
  17.                         if((int)(sum)==n)
  18.                         {
  19.                                 System.out.println(n);
  20.                                 total=total+n;
  21.                         }
  22.                 }
  23.                 return total;
  24.         }
  25.         public static void main(String[] args) {
  26.                 // TODO 自動產生的方法 Stub
  27.                
  28.                 Scanner s=new Scanner(System.in);
  29.                
  30.                 int m=s.nextInt();
  31.                 System.out.println(compute(m));
  32.         }

  33. }
複製代碼

作者: 陳楷翔    時間: 2023-8-26 10:53

此帖僅作者可見
作者: 許浩浩    時間: 2023-9-3 11:54

此帖僅作者可見
作者: 柏霖    時間: 2023-9-9 17:03

此帖僅作者可見
作者: 侯宣仲    時間: 2023-9-9 17:14

此帖僅作者可見
作者: 侯宣任    時間: 2023-9-9 17:23

此帖僅作者可見
作者: 謝閔丞    時間: 2023-9-9 17:23

此帖僅作者可見
作者: 錢冠叡    時間: 2023-9-14 20:22

此帖僅作者可見
作者: 張駿霖    時間: 2023-9-16 16:13

此帖僅作者可見




歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/) Powered by Discuz! 7.2