题目:
算法训练 阿尔法乘积
时间限制: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 → 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>
#include<cstring>
using namespace std;
string str1;
void a(int len1)
{
if(len1==1)
return ;
else
{
int i=0,sum=1;
while(len1--)
{
if(str1[i]!='0')
{
sum=sum*(str1[i]-'0');
}
i++;
}
str1.clear();
i=0;
while(sum)
{
str1+=(sum%10)+'0';
sum=sum/10;
}
len1=strlen(&str1[0]);
}
a(len1);
}
int main()
{
cin>>str1;
int len=strlen(&str1[0]);
a(len);
cout<<str1<<endl;
return 0;
}