比赛 |
刷题ing |
评测结果 |
AAAAAAAAAA |
题目名称 |
麦森数 |
最终得分 |
100 |
用户昵称 |
zzz |
运行时间 |
0.079 s |
代码语言 |
C++ |
内存使用 |
1.31 MiB |
提交时间 |
2018-05-29 14:40:34 |
显示代码纯文本
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <math.h>
#include <bitset>
#include <algorithm>
#include <climits>
using namespace std;
#define LL long long
#define N 510
#define mod 1000000007
#define INF 0x3f3f3f3f
#define lson root<<1
#define rson root<<1|1
int a[N],b[N*N],c[N];
void mul()
{
memset(b,0,sizeof(b));
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
b[i+j] += a[i]*a[j];
}
}
for(int i=0;i<N-1;i++)
{
b[i+1] +=b[i]/10;
b[i] = b[i]%10;
a[i] = b[i];
}
}
void mul1()
{
memset(b,0,sizeof(b));
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
b[i+j] += a[i]*c[j];
}
}
for(int i=0;i<N-1;i++)
{
b[i+1] +=b[i]/10;
b[i] = b[i]%10;
c[i] = b[i];
}
}
void solve(int n)
{
memset(a,0,sizeof(a));
c[0] = 1;
a[0] = 2;
while(n)
{
if(n&1) mul1();
mul();
n = n/2;
}
}
int main()
{
freopen("mason.in","r",stdin);
freopen("mason.out","w",stdout);
int p;
while(scanf("%d",&p)!=EOF)
{
printf("%d\n",(int)(p*0.30102999566)+1);
solve(p);
c[0]--;
int i = 499;
int sum = 0;
while(i>=0)
{
printf("%d",c[i--]);
sum++;
if(sum==50)
{
puts("");
sum = 0;
}
}
}
return 0;
}