C語言 · 阿爾法乘積

來源:互聯網
上載者:User

標籤:tns   ref   正整數   ret   2.0   數字   遍曆   scan   btn   

演算法訓練 阿爾法乘積  時間限制:1.0s   記憶體限制:512.0MB     問題描述  計算一個整數的阿爾法乘積。對於一個整數x來說,它的阿爾法乘積是這樣來計算的:如果x是一個個位元,那麼它的阿爾法乘積就是它本身;否則的話,x的阿爾法乘積就等於它的各位非0的數字相乘所得到的那個整數的阿爾法乘積。例如:4018224312的阿爾法乘積等於8,它是按照以下的步驟來計算的:
  4018224312 → 4*1*8*2*2*4*3*1*2 → 3072 → 3*7*2 → 42 → 4*2 → 8
  編寫一個程式,輸入一個正整數(該整數不會超過6,000,000),輸出它的阿爾法乘積。
  輸入格式:輸入只有一行,即一個正整數。
  輸出格式:輸出相應的阿爾法乘積。
  輸入輸出範例範例輸入4018224312範例輸出8 作者注釋:此題原本以為比較簡單,後來才想用字元數組來存放輸入的數,再通過遍曆加判斷來操作,過程中想到了用遞迴來做,出口為n<10。
 1 #include<stdio.h> 2 long long A(long long n){ 3     if(n<10){//遞迴出口  4         return n; 5     }else{ 6         long long JI=1; 7         while(n!=0){ 8             if(n%10!=0){//若不能被10整除,取餘數乘到結果中且對n進行除以10運算  9                 JI*=n%10;10                 n/=10;11             }else//若能被10整除,則結果不變,所以進行除以10運算 12                 n/=10;13         }14         return A(JI);15     }16 }17 main(){18     long long x;19     scanf("%lld",&x);20     printf("%lld",A(x));21 }

 

C語言 · 阿爾法乘積

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.