解题思路
这道题分为两部分,高精与计算连续0
废话不多说上代码
#include <iostream>
using namespace std;
class num
{
public:
int num[10001];
int len;
};
void gjd(int a,num &n)//高精度*低精度
{
num ans;
for(int i=0;i<=10000;i++)
{
ans.num[i]=0;
}
int b=a;
for(int i=10000;i>=n.len;i--)
{
ans.num[i]+=n.num[i]*a%10;
ans.num[i-1]+=n.num[i]*a/10;
}
for(int j=0;j<=9;j++)
{
for(int i=10000;i>=1;i--)
{
int c=ans.num[i];
ans.num[i]%=10;
ans.num[i-1]+=c/10;
}
}
for(int i=0;i<=10000;i++)
{
if(ans.num[i]!=0)
{
ans.len=i;
break;
}
}
for(int i=0;i<=10000;i++)
{
n.num[i]=ans.num[i];
}
n.len=ans.len;
}
i