hdoj 1250 Hat's Fibonacci 【高精度】

Fibonacci。。。

策略:用Java 做这道题较简单一些,但是,C语言是基础。

用java的话,就是最简单的BigInteger的使用。

下面简单讲一下C语言的做法:

一个12位的整数,可以表示为,3个四位的整数的集合,例如123412341234就可以转化为1234, 1234, 1234。下面的就是按照此原理做的。

c代码:

#include <stdio.h>//每一个int都代表6个数。
#include <string.h>
#define M 10000
int a[M][450];
void table(){
    int i, j;
    memset(a, 0, sizeof(a));
    a[1][0] = a[2][0] = a[3][0] = a[4][0] = 1;
    for(i = 5; i < M; i ++){
        for(j = 0; j < 450; j ++)
            a[i][j] = a[i-1][j]+a[i-2][j]+a[i-3][j]+a[i-4][j];
        for(j = 0; j < 449; j ++){
            if(a[i][j] >= 1000000){
                int temp = a[i][j]/1000000;
                a[i][j] %= 1000000;
                a[i][j+1] += temp;
            }
        }
    }
}
int main(){
    table();
    int i, n;
    while(scanf("%d", &n) == 1){
        i = 449;
        while(a[n][i] == 0) i--;
        printf("%d", a[n][i]);
        while(-- i >= 0 ){
            printf("%06d", a[n][i]);//这里输出的时候,不足六位的时候要用0补上
        }
        puts("");
    }
    return 0;
}

java代码:

import java.util.Scanner;
import java.math.*;

public class Main{

    public static void main(String[] args){
        Scanner cin = new Scanner(System.in);
        BigInteger[] s = new BigInteger[20005];
        s[1] = new BigInteger("1");
        s[2] = s[3] = s[4]= s[1];
        int i;
        for(i = 5; i < 20005; i ++){
            s[i] = s[i-1].add(s[i-2]).add(s[i-3]).add(s[i-4]);
        }
        int n;
        while(cin.hasNextInt()){
            n = cin.nextInt();
            System.out.println(s[n]);
        }
    }
}

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1250

hdoj 1250 Hat's Fibonacci 【高精度】

时间: 2024-12-29 15:54:15

hdoj 1250 Hat's Fibonacci 【高精度】的相关文章

hdu 1250 Hat&#39;s Fibonacci(高精度数)

//  继续大数,哎.. Problem Description A Fibonacci sequence is calculated by adding the previous two members the sequence, with the first two members being both 1. F(1) = 1, F(2) = 1, F(3) = 1,F(4) = 1, F(n>4) = F(n - 1) + F(n-2) + F(n-3) + F(n-4) Your tas

HDOJ/HDU 1250 Hat&#39;s Fibonacci(大数~斐波拉契)

Problem Description A Fibonacci sequence is calculated by adding the previous two members the sequence, with the first two members being both 1. F(1) = 1, F(2) = 1, F(3) = 1,F(4) = 1, F(n>4) = F(n - 1) + F(n-2) + F(n-3) + F(n-4) Your task is to take

HDU 1250 Hat&#39;s Fibonacci(Java大数相加)+讲解

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1250 Problem Description A Fibonacci sequence is calculated by adding the previous two members the sequence, with the first two members being both 1. F(1) = 1, F(2) = 1, F(3) = 1,F(4) = 1, F(n>4) = F(n -

hdu 1250 Hat&#39;s Fibonacci

Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9677 Accepted Submission(s): 3210 Problem Description A Fibonacci sequence is calculated by adding the previous two members the seque

hdu 1250 Hat&#39;s Fibonacci (大数相加)

//a[n]=a[n-1]+a[n-2]+a[n-3]+a[n-4]; # include <stdio.h> # include <algorithm> # include <string.h> # include <iostream> using namespace std; int a[10000][260]={0}; //每个元素可以存储8位数字,所以2005位可以用260个数组元素存储. int main() { int i,j,n; a[1][0

HDUJ 1250 Hat&#39;s Fibonacci

Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7338    Accepted Submission(s): 2395 Problem Description A Fibonacci sequence is calculated by adding the previous two members th

HDU 1250 Hat&#39;s Fibonacci(大数相加)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1250 Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12952    Accepted Submission(s): 4331 Problem Description A Fibonacci sequence

HDU 1250 Hat&#39;s Fibonacci (递推、大数加法、string)

Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 14776    Accepted Submission(s): 4923   Problem Description A Fibonacci sequence is calculated by adding the previous two members

hdu 1250 Hat&amp;#39;s Fibonacci

点击此处就可以传送hdu 1250 Problem Description A Fibonacci sequence is calculated by adding the previous two members the sequence, with the first two members being both 1. F(1) = 1, F(2) = 1, F(3) = 1,F(4) = 1, F(n>4) = F(n - 1) + F(n-2) + F(n-3) + F(n-4) You