[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;
	}
	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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值