hdu 1041大数问题

来源:互联网 发布:工资查询软件 编辑:程序博客网 时间:2024/05/16 06:37
#include<iostream>#include<algorithm>#include<string>//在hdu上必须是string才能过,cstring不能过!CE了一次#include<cstdio>using namespace std;const int N=1010;string add(string a,string b){         if(a.length()<b.length())      {                 string temp;            temp=a;            a=b;            b=temp;        }      int i,j;      for( i=a.length()-1, j=b.length()-1;i>=0;i--,j--)      {            a[i]=a[i]+((j>=0)?b[j]-'0':0);//按字符接收            if(a[i]-'0'>9)            {                  a[i]=(a[i]-'0')%10+'0';                  if(i) a[i-1]++;                  else a="1"+a;            }                }      return a;}    int main(){      int n;      string s[N];      s[0]=s[1]="0";s[2]="1";s[3]="1";s[4]="3";s[5]="5";s[6]="11";      for(int i=7;i<N;i++)      {             s[i]=add(s[i-1],add(s[i-2],s[i-2]));                  }      while(cin>>n)      {           //  if(!n) break;             cout<<s[n]<<endl;      }      return 0;}