您的位置:首页 > 其它

HDOJ HDU 1715 大菲波数 ACM 1715 IN HDU string add 模板

2010-08-25 09:59 323 查看
MiYu原创, 转帖请注明 : 转载自 ______________白白の屋

题目地址:

http://acm.hdu.edu.cn/showproblem.php?pid=1715

题目描述:

Problem Description

Fibonacci数列,定义如下:

f(1)=f(2)=1

f(n)=f(n-1)+f(n-2) n>=3。

计算第n项Fibonacci数值。

Input

输入第一行为一个整数N,接下来N行为整数Pi(1<=Pi<=1000)。

Output

输出为N行,每行为对应的f(Pi)。

Sample Input
5
1
2
3
4
5

Sample Output
1
1
2
3
5

看题目就知道是大数了..........直接模板吧 .没什么好说的.

代码如下:

#include <iostream>

#include <string>
using namespace std;

string Add(string fNum,string sNum)

{

if( fNum.length() < sNum.length() ) fNum.swap(sNum);

string A = "0";

A += fNum;

for ( int i=1;i<=fNum.length();i++)

if(i<=sNum.length())

A[A.length()-i]+=sNum[sNum.length()-i]-'0';

for( int i=1;i<A.length();i++)

{

if(A[A.length()-i]>'9')

{ A[A.length()-i]-=10;A[A.length()-i-1]+=1; }

}

while(A[0]=='0') A.erase(0,1);

return A;

}

string F[1001] = { "0", "1", "1" };
void setNum ()

{

for ( int i = 3; i != 1001; ++ i )

{

F[i] = Add ( F[i-1] , F[i-2] ) ;

}

}
int main ()

{

int T;

setNum ();

while ( cin >> T )

{

while ( T -- )

{

int N;

cin >> N;

cout << F
<< endl;

}

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: