前言:
这是前言,信息学奥赛一本通(c++版)题解声明
题目:
思路:
高精度乘以低精度,这道题跟前面的,1170:计算2的N次方类似。
1.数组反过来标记
2.n每次减一
3.每一位乘以n,用x记录进位
4.乘完后如果x还有值,进位,x/=10;
code:
#include<bits/stdc++.h>
using namespace std;
const int N=1e7;
int n,l;
int a[N];
string s;
int x;
int main()
{
cin>>s;
for(int i=0;i<s.size();i++)
a[s.size()-i]=s[i]-'0',n*=10,n+=s[i]-'0';
l=s.size();
while(--n)
{
for(int i=1;i<=l;i++)
{
a[i]*=n;
a[i]+=x;
x=(a[i]/10);
a[i]%=10;
}
while(x)
{
l++;
a[l]=x;
x=a[l]/10;
a[l]%=10;
}
}
for(int i=l;i>=1;i--)
cout<<a[i];
return 0;
}
废话:
这是废话(●'◡'●)