题目描述
一个整数的数字乘积根是这样得到的:将此整数中的非零数字相乘,得到的结果再重复上述运算,直到只有一位数为止,此一位数即为原整数的数字乘积根。例如:整数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;
}