zcmu--1041: 二哥的困惑 Ⅳ

1041: 二哥的困惑 Ⅳ

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 284  Solved: 91
[Submit][Status][Web Board]

Description

A Fibonacci sequence is calculated by adding the previous two members of the sequence, with the first two members being both 1.

f(1) = 1, f(2) = 1, f(n > 2) = f(n - 1) + f(n - 2)

Your task is to take a number as input, and print that Fibonacci number.

Input

Input contains several cases, every case contains a positive integer number N.

Output

print the Nth Fibonacci number.

Sample Input

100

Sample Output

354224848179261915075

【分析】

       下面这个用的是矩阵做的,但是100太大了不行;

#include<bits/stdc++.h>
using namespace std;

void cal(long long a[1][2],long long b[2][2])
{
	long long c[1][2];
	c[0][0]=a[0][0]*b[0][0]+a[0][1]*b[1][0];
	c[0][1]=a[0][0]*b[0][1]+a[0][1]*b[1][1];
	a[0][0]=c[0][0];
	a[0][1]=c[0][1];
}
int main()
{
	long long n,cnt=0;
	while(~scanf("%lld",&n))
	{
		long long a[1][2]={1,1};
		long long b[2][2]={0,1,1,1};
		if(n==1||n==2)cout<<"1\n";
		else {
			
			for(int i=3;i<=n;i++)
				cal(a,b);
			cout<<a[0][1]<<endl;
		}
	}
}

所以,,,还是用Java吧

import java.math.BigInteger;
import java.util.Scanner;
public class Main {
   	public static void main(String args[]) {
    	Scanner in=new Scanner(System.in);
    	int n;
    	BigInteger a[]=new BigInteger[1005];
    	while(in.hasNext()) {
    		n=in.nextInt();
    		a[1]=BigInteger.valueOf(1);
    		a[2]=BigInteger.valueOf(1);
   			for(int i=3;i<=n;i++)
    			a[i]=a[i-1].add(a[i-2]);
    		System.out.println(a[n]);
   		}
   	}
}

关于Java大数类的一些知识点:https://www.cnblogs.com/Leonard-/p/7636639.html

https://www.cnblogs.com/superxuezhazha/p/4761854.html

猜你喜欢

转载自blog.csdn.net/qq_38735931/article/details/81263678