| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
本地测所有数据均通过 提交无限WA 求解!!!#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
char dp[333][11111];
char *Add(char *str1,char *str2)
{
int i,k,j;
int len1 = strlen(str1);
int len2 = strlen(str2);
char str[11111];
k = max(len1,len2);
str[k+1] = 0;
for(i = len1-1,j = len2-1; i >= 0 && j >= 0; --i,--j,--k)
{
str[k] = str1[i]+str2[j]-'0';
if(str[k+1] > '9')
{
str[k] += 1;
str[k+1] -= 10;
}
}
while(j > -1)
{
str[k] = str2[j--];
if(str[k+1] > '9')
{
str[k] += 1;
str[k+1] -= 10;
}
--k;
}
while(i > -1)
{
str[k] = str1[i--];
if(str[k+1] > '9')
{
str[k] += 1;
str[k+1] -= 10;
}
--k;
}
if(str[k+1] > '9')
{
str[k] = '1';
str[k+1] -= 10;
return str;
}else return str+1;
}
int main()
{
int n;
int i;
strcpy(dp[0],"1");
strcpy(dp[1],"1");
for(i = 2; i <= 300; ++i)
strcpy(dp[i],Add(dp[i-1],Add(dp[i-2],dp[i-2])));
while(scanf("%d",&n)!= EOF)
{
printf("%s\n",dp[n]);
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator