Description
计算一个整数的阿尔法乘积。对于一个整数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),输出它的阿尔法乘积。
Input
输入只有一行,即一个正整数。
Output
输出相应的阿尔法乘积。
Sample Input
4018224312
Sample Output
8
HINT
Source
---------------------------------------------------------------------------------------------------------------------------------
这道题我第一反应是to_string,奈何oj的编译器有点老没法使用这个函数,我就去学了一下有什么方法能够代替to_string。这里附上宝藏blog:c++ stringstream(老好用了)_龙贝尔莱利的博客-CSDN博客_stringstream
读题,我们看到关于结果有两种情况。第一种是仅一个数(输出它本身即可),第二种是多位数,需要按照题目要求输出。大数考虑用string存储。
ac代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a;
cin>>a;
int temp_sum=1;
if(a.size()==1)//如果仅一位数
{
cout<<a<<endl;
return 0;
}
else
while(a.size()>1)//多个数
{
stringstream ss;//①
temp_sum=1;
for(int i=0;i<a.size();i++)
{
if(a[i]-'0'>0)
{
temp_sum=temp_sum*(a[i]-'0');
continue;
}
else
continue;
}
ss<<temp_sum;//②
a=ss.str();//③ //①②③必须在同一个循环内
}
cout<<temp_sum<<endl;
}