本文主要是介绍[ZCMU OJ]2135: 阿尔法乘积(数字与字符串的转换/利用stringstream代替to_string),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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;}elsewhile(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;}elsecontinue;}ss<<temp_sum;//② a=ss.str();//③ //①②③必须在同一个循环内 }cout<<temp_sum<<endl;
}
这篇关于[ZCMU OJ]2135: 阿尔法乘积(数字与字符串的转换/利用stringstream代替to_string)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!