一道简单的C++编程题,原题目在下面,求各位大神帮帮我吧!
一个正整数的数字的乘积的定义是:这个数字中所有非零数字的乘积。例如,999的数字乘积为9*9*9=729,729的数字乘积为7*2*9=126,126的数字乘积为1*2*...
一个正整数的数字的乘积的定义是:这个数字中所有非零数字的乘积。例如,999的数字乘积为9*9*9=729,729的数字乘积为7*2*9=126,126的数字乘积为1*2*6=12,12的数字乘积为1*2=2,一个数字的乘积根就是这样得到的,反复计算该数字的数字乘积,直到得到一位数字为止。
编写一个程序,输入一个200位以内的正整数,输出计算其乘积根的每一步。 展开
编写一个程序,输入一个200位以内的正整数,输出计算其乘积根的每一步。 展开
3个回答
展开全部
由于200位太长了,就直接大数处理。(这是最暴力的,测了几个数据发现很长的数据结果都是0,所以应该有什么规律,你可以自己想下)
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int a[202],b[202],t,tt;
char s[202];
int main()
{
while(cin>>s)
{
t=strlen(s);
int i,j,k;
for(i=0;i<t;i++)a[i]=s[i]-'0';
while(t!=1)
{
b[0]=1;
tt=1;
for(i=0;i<t;i++)
{
int temp=0;
for(j=0;j<tt;j++)
{
b[j]=a[i]*b[j]+temp;
temp=b[j]/10;
b[j]=b[j]%10;
}
if(temp!=0)b[tt++]=temp;
}
t=tt;
for(i=0;i<t;i++)a[i]=b[i];
}
cout<<a[0]<<endl;
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
using namespace std;
int fen(int x){
int i=0,j=0,k=0,sum=1;
i = x/100;
j =(x-i*100)/10;
k = (x-i*100-j*10);
if(i !=0){
sum = i*sum;
cout<<i<<"*";
}
if(j !=0){
sum= j*sum;
cout<<j<<"*";
}
if(k !=0){
sum= k*sum;
cout<<k<<"="<<sum<<endl;
}
return sum;
}
int main(){
int a;
cin>>a;
while(a>=10)
a = fen(a);
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
200位。。你需要用一个a[200]的数组 来存放这个数字
主要就是高精度运算 你可以去学一下
主要就是高精度运算 你可以去学一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询