給你A和B,求[A,B]區間內有多少個水仙花數 輸入描述: 兩個整數,用空格隔開,保證數字

       
給你A和B,求[A,B]區間內有多少個水仙花數
  輸入描述:
   兩個整數,用空格隔開,保證數字都小於等於1000000,否則返回0
  輸出描述:
   一個數字,表示[A,B]區間內的水仙花數個數


分析得分點:

        1、輸入以空格隔開的兩數字(需要解析,去空格)

        2、數字要小於等於1000000,否則返回0

        3、水仙花數的數字位數不確定


具體實現:

package demo;
/**
 * @Author 小豬上天
 * @Email [email protected]
 * @Data 2019/11/5  14:51
 * @Version V1.0
 * @description
 */
import java.util.Scanner;
/**
 * 給你A和B,求[A,B]區間內有多少個水仙花數
 * 輸入描述:
 *  兩個整數,用空格隔開,保證數字都小於等於1000000,否則返回0
 * 輸出描述:
 *  一個數字,表示[A,B]區間內的水仙花數個數
 *
 */
public class demo1 {
    public static void main(String[] args) {
        String[] input = new Scanner(System.in).nextLine()
                                    .split(" ");
        int a =  Integer.parseInt(input[0]);
        int b = Integer.parseInt(input[1]);
        if(a>b){      //判斷輸入兩數字大小順序
            a=a+b;
            b=a-b;
            a=a-b;
        }
//        System.out.println(a);
//        System.out.println(b);
        if(b>1000000){     //數字大於1000000返回0
            System.out.println(0);
            return;
        }
        int count=0;
        for(int number=a;number<=b;number++){
            int temp = number;
            int sum = 0;
            for(int i=0;i<GetLength(number);i++){
                sum += Math.pow(temp % 10, GetLength(number));//次方和相加
                temp = temp / 10;
            }
            if (sum == number) {//判斷是否相等
                count++;
            }
        }
        System.out.println(count);
    }
    static int GetLength(int number){   //分析數字的具體位數
        int i = 0;
        while (number / 10 > 0) {
            i++;
            number /= 10;
        }
        return i + 1;
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章