目录
1.麦森数
题目描述
输入格式
输出格式
样例输入
1279
样例输出
386 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000104079321946643990819252403273640855 38615262247266704805319112350403608059673360298012 23944173232418484242161395428100779138356624832346 49081399066056773207629241295093892203457731833496 61583550472959420547689811211693677147548478866962 50138443826029173234888531116082853841658502825560 46662248318909188018470682222031405210266984354887 32958028878050869736186900714720710555703168729087
思路
第一问:位数=log10(-1)=log10(
)=p*log10(2),例如log10(100)=2,所以ans=int(p*log10(2))+1
第二问:由于求的是非常大的数,我们用高精度还有快速幂的结合进行求值。
快速幂是把指数拆成二进制的一种算法吗,高精度可以计算大数运算法则。
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<vector>
#include<cmath>
using namespace std;
const int N=500;
typedef vector<int> VI;
VI a(N),res(N);
int p;
VI mul(VI &a,VI &b)
{
VI c(N*2);
for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
{
c[i+j]+=a[i]*b[j];
c[i+j+1]+=c[i+j]/10;
c[i+j]%=10;
}
retu