游客 Signup | Login
中文 | En

2793 - 求数字乘积根

一个正整数的数字的乘积的定义是:这个整数中非零数字的乘积。例如整数999的数字乘积为9×9×9,即729;729的数字乘积为7×2×9,即126;126的数字乘积为1×2×6,即12;12的数字乘积为1×2,即2。


一个正整数的数字乘积根是这样得到的:反复取该整数的数字乘积,直到得到一个数字为止。999的数字乘积根就是2。

Input

一行:一个正整数n,10<n<1000000000

Output

一行:数字乘积根

Examples

Input

999

Output

2

Solution C++

#include<bits/stdc++.h>
using namespace std;
string s1,s2,s3;
int a[1005];
void xx(string s,int ss)
{
	memset(a,0,sizeof(a));
	int si=s.size();
	for(int i=0;i<si/2;i++)
		swap(s[i],s[si-1-i]);
	for(int i=0;i<si;i++)
	{
		a[i]+=(s[i]-'0')*ss;
		a[i+1]+=a[i]/10;
		a[i]=a[i]%10;
	}
	int q=0;
	if(a[si]!=0) si++;
	string s3="";
	swap(s3,s2);
	for(int i=si-1;i>=q;i--)
		s2+=char(a[i]+'0');
}
int main()
{
	cin>>s1;
	if(s1.size()==1)cout<<s1;
	else
	for(;s1.size()!=1;)
	{
		s2+=s1[0];
		for(int i=1;i<s1.size();i++)if(s1[i]!='0')xx(s2,s1[i]-'0');
		swap(s1,s2);
		string fc="";
		swap(fc,s2);
	}
	cout<<s1;
	return 0;
}

Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题