• HDU 1715 大菲波数


    大菲波数

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 16771    Accepted Submission(s): 5537


    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
     
    Source
     
     
     
    解析:大数。可以查到,斐波那契数列第1000个数的位数为209。
     
     
     
     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 int fib[1005][215];
     5 
     6 void init()
     7 {
     8     memset(fib,0,sizeof(fib));
     9     fib[1][1] = 1;
    10     fib[2][1] = 1;
    11     int tmp;
    12     int carry = 0;  //进位
    13     for(int i = 3; i <= 1000; ++i){
    14         for(int j = 1; j <= 209; ++j){
    15             tmp = fib[i-1][j]+fib[i-2][j]+carry;
    16             fib[i][j] = tmp%10;
    17             carry = tmp/10;
    18         }
    19     }
    20 }
    21 
    22 int main()
    23 {
    24     init();
    25     int t,n;
    26     scanf("%d",&t);
    27     while(t--){
    28         scanf("%d",&n);
    29         int i;
    30         for(i = 215; i>0 && fib[n][i] == 0; --i)
    31             ;
    32         for(; i>0; --i){
    33             printf("%d",fib[n][i]);
    34         }
    35         printf("
    ");
    36     }
    37     return 0;
    38 }
    另外,JAVA中有功能强大的大数类可供我们直接调用。
     
     
     
     1 import java.util.Scanner;
     2 import java.math.BigInteger;
     3 
     4 class Main{
     5     public static void main(String[] args) {
     6         BigInteger[] bi = new BigInteger[1001];
     7         bi[1] = new BigInteger("1");
     8         bi[2] = new BigInteger("1");;
     9         for(int i=  3; i <= 1000; ++i){
    10             bi[i] = bi[i-1].add(bi[i-2]);
    11         }
    12         Scanner in = new Scanner(System.in);
    13         int t = in.nextInt();
    14         int n;
    15         for(int i = 0; i<t; ++i){
    16             n = in.nextInt();
    17             System.out.println(bi[n]);
    18         }
    19     }
    20 }
  • 相关阅读:
    关于ArcGis for javascrept查询ArcGis server图层信息的方式
    Elasticsearch教程之基础概念
    C# 将日期转换成中文格式
    .Net 自定义Excel模板导出数据
    JavaScript判断浏览器类型
    简单的json传送数据
    Oracle替换临时表空间
    Python多线程循环
    crontab执行不生效-【问题篇】
    Python将MySQL表数据写入excel
  • 原文地址:https://www.cnblogs.com/inmoonlight/p/5439390.html
Copyright © 2020-2023  润新知