1. 程式人生 > >ALGO-104演算法訓練 阿爾法乘積(c++)

ALGO-104演算法訓練 阿爾法乘積(c++)

演算法訓練 阿爾法乘積  

時間限制: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

#include <iostream>
#include <string>
using namespace std;

int main(int argc, char** argv) {
	string s;
	cin>>s;
	int m=1;
	for(int i=s.length()-1;i>=0;i--)
		if((s[i]-'0')%10)
			m*=(s[i]-'0');
	int n=m;
	while(n/10){
		m=n;
		n=1;
		while(m){
			if(m%10)
				n*=m%10;
			m/=10;
		}
	}
	cout<<n<<endl;
	
	return 0;
}