乘积根(gen)

题目描述

一个整数的数字乘积根是这样得到的:将此整数中的非零数字相乘,得到的结果再重复上述运算,直到只有一位数为止,此一位数即为原整数的数字乘积根。例如:整数99,99→9×9=81→8×1=8,8即为99的乘积根。
输入

一个n位的整数(n≤255)。
输出

有若干行,每行显示每次数字相乘之后的结果,最后一行只有一个一位数,即n的乘积根。
样例输入 Copy

99
样例输出 Copy

81
8
提示

【输入输出样例】

输入
输出
样例1
99
81
8
样例2
1203
6

#include<bits/stdc++.h>
using namespace std;
char za[1000];
int a[1000],ca,b[1000],cb=1,x,v;
int main()
{
    
    
	b[1]=1;
	cin>>za;
	ca=strlen(za);
	for(int i=0;i<ca;i++)
		a[i+1]=za[i]-48;
	if(ca==1)
		cout<<za;
	while(ca>1)
	{
    
    
		for(int i=1;i<=cb;i++)
			b[i]=0;
		b[1]=1;
		cb=1;
		for(int i=1;i<=ca;i++)
		{
    
    
			x=a[i];
			v=0;
			for(int j=1;j<=cb;j++)
			{
    
    
				if(x!=0)
				{
    
    
					b[j]=b[j]*x+v;
					v=b[j]/10;
					b[j]%=10;
				}
			}
			if(v!=0)
			{
    
    
				cb++;
				b[cb]=v;
			}
		}
		for(int i=ca;i>=cb;i--)
			a[i]=0;
		ca=cb;		
		for(int i=cb;i>=1;i--)
		{
    
    
			a[i]=b[i];
			cout<<a[i];
		}
		cout<<endl;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_52628784/article/details/113073280
gen