天天看點

題目 1605: [藍橋杯][算法訓練VIP]阿爾法乘積題目描述:(原題連結)輸入:輸出:解題思路:注意事項:參考代碼:

時間限制: 1Sec 記憶體限制: 128MB

題目描述:(原題連結)

 計算一個整數的阿爾法乘積。對于一個整數x來說,它的阿爾法乘積是這樣來計算的:如果x是一個個位數,那麼它的阿爾法乘積就是它本身;

     否則的話,x的阿 爾法乘積就等于它的各位非0的數字相乘所得到的那個整數的阿爾法乘積。

     例如:4018224312的阿爾法乘積等于8,它是按照以下的步驟來計算的:

4018224312 → 418224312 → 3072 → 372 → 42 → 4*2 → 8

編寫一個程式,輸入一個正整數(該整數不會超過6,000,000),輸出它的阿爾法乘積。

輸入:

輸入隻有一行,即一個正整數。

樣例輸入:

4018224312

輸出:

輸出相應的阿爾法乘積。

樣例輸出 :

8

解題思路:

     字元串的遞歸

注意事項:

     無

參考代碼:

import java.util.Scanner;
public class Main {
    private static String fab(String num) {
        if(num.length()==1)
            return num;
        else {
            int sum=1;
            for(int i=0;i<num.length();i++) {
                if(num.charAt(i)!='0')
                    sum=sum*(num.charAt(i)-'0');
            }
            return fab(Integer.toString(sum));
        }
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s =in.next();
        System.out.println(fab(s));
        in.close();
      }
}
           

繼續閱讀