记录编号 |
132745 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2003]麦森数 |
最终得分 |
100 |
用户昵称 |
席一鸣 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.042 s |
提交时间 |
2014-10-26 16:33:40 |
内存使用 |
0.32 MiB |
显示代码纯文本
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int r[500]={0},d[500]={0},t[500];
void m(int*a,int*b)
{
int i,k;
memset(t,0,sizeof(t));
for(i=0;i<500;i++)
for(k=0;k<500;k++)
if(i+k<500)
t[i+k]+=a[i]*b[k];
else
break;
for(i=0;i<499;i++)
{
t[i+1]+=t[i]/10;
a[i]=t[i]%10;
}
a[499]=t[499]%10;
}
main()
{
freopen("mason.in","r",stdin);
freopen("mason.out","w",stdout);
int i,n;
r[0]=1;
d[0]=2;
cin>>n;
cout<<int(n*log10(2)+1)<<endl;
while(n)
{
if(n&1)
m(r,d);
m(d,d);
n>>=1;
}
r[0]--;
cout<<char(r[499]+48);
for(i=499;i>0;i--)
{
if(!(i%50))
cout<<endl;
cout<<char(r[i-1]+48);
}
}