vans.cpp
来自「dd牛的usaco源代码!对学习算法」· C++ 代码 · 共 69 行
CPP
69 行
/*
ID: dd.ener1
PROG: vans
LANG: C++
*/
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=1024;
struct BigNum{
long s[100];
BigNum(long n=0){
memset(s,0,sizeof(s));
s[0]=n;
}
void smooth(){
for(long i=0;i<99;++i){
s[i+1]+=s[i]/100000000;
s[i]%=100000000;
}
}
void operator+=(BigNum b){
for(long i=0;i<100;++i)
s[i]+=b.s[i];
smooth();
}
static void output(long n){
char s[20];
sprintf(s,"%d",n);
for(long l=strlen(s);l<8;++l)
putchar('0');
printf("%s",s);
}
void output(){
long i=99;
for(;i>=0&&s[i]==0;--i);
if(i==-1)i=0;
printf("%d",s[i]);
for(--i;i>=0;--i)
output(s[i]);
putchar('\n');
}
}a[maxn],b[maxn],s;
int N;
int main(){
freopen("vans.in","r",stdin);
scanf("%d",&N);
a[2]=2;
for(int i=3;i<=N;++i){
s+=b[i-1];
a[i]=2;
a[i]+=a[i-2];
a[i]+=s;
a[i]+=s;
b[i]=a[i-1];
b[i]+=b[i-1];
}
a[N]+=b[N];
freopen("vans.out","w",stdout);
a[N].output();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?