HDU 1250Hat's Fibonacci(两种方法处理大数)
来源:互联网 发布:数据库从入门到精通 编辑:程序博客网 时间:2024/05/17 07:18
Hat's Fibonacci
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5891 Accepted Submission(s): 1944
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 a number as input, and print that Fibonacci number.
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 a number as input, and print that Fibonacci number.
Input
Each line will contain an integers. Process to end of file.
Output
For each case, output the result in a line.
Sample Input
100
Sample Output
4203968145672990846840663646Note:No generated Fibonacci number in excess of 2005 digits will be in the test data, ie. F(20) = 66526 has 5 digits.
题目大意:题目的意思就不说了,主要是简单地处理大数。
解题思路:先是用C++写的处理大数,每次只涉及到两个数相加,直接转换成string,所以位数就取len较大的那位。如果第一位超过了10则直接再最前面加一个1,第一位减去10,string支持直接用"1"+。详见代码。
题目地址:Hat's Fibonacci
C++代码:
#include<iostream> #include<string> using namespace std; string add(string s1,string s2) { int j,l,la,lb; string ma,mi; ma=s1;mi=s2; if(s1.length()<s2.length()) {ma=s2;mi=s1;} la=ma.size();lb=mi.size(); l=la-1; for(j=lb-1;j>=0;j--,l--) ma[l] += mi[j]-'0'; for(j=la-1;j>=1;j--) if(ma[j]>'9') {ma[j]-=10;ma[j-1]++;} if(ma[0]>'9') //处理第一位超过9了。 {ma[0]-=10;ma='1'+ma;} return ma; } int main(){ int n,i; string a[8008]; a[1]="1"; a[2]="1"; a[3]="1"; a[4]="1"; for(i=5;i<8008;++i) a[i]=add(add(add(a[i-1],a[i-2]),a[i-3]),a[i-4]); while(cin>>n) cout<<a[n]<<endl; return 0; }
以后遇到大数的问题,不用那么坑爹的再敲该死的那么长的模板了,直接上JAVA。
JAVA代码:
import java.util.*;import java.math.*;public class Main { public static void main(String args[]) { Scanner cin = new Scanner(System.in); BigInteger res[]; res = new BigInteger[8008]; res[1]=BigInteger.ONE; res[2]=BigInteger.ONE; res[3]=BigInteger.ONE; res[4]=BigInteger.ONE; for(int i=5;i<=8000;i++) { res[i]=res[i-1].add(res[i-2]); res[i]=res[i].add(res[i-3]); res[i]=res[i].add(res[i-4]); } int p; while(cin.hasNext()) { p=cin.nextInt(); System.out.println(res[p]); } }}
- HDU 1250Hat's Fibonacci(两种方法处理大数)
- hdu 1250 Hat's Fibonacci(java大数)
- hdu 1250 Hat's Fibonacci (大数相加)
- [大数] HDU 1250 - Hat's Fibonacci
- hdu-1250-Hat's Fibonacci(大数问题)
- HDU 大数加 - 1250 Hat's Fibonacci
- HDU 1250 Hat's Fibonacci (JAVA大数)
- hdu 1250 Hat's Fibonacci(大数)
- HDU 1250-Hat's Fibonacci(大数)
- HDU 1250 Hat's Fibonacci JAVA大数
- hdu 1250 Hat's Fibonacci (大数相加,水题)
- hdu 1250 Hat's Fibonacci(大数加法)
- HDU 1250 Hat's Fibonacci 大数加法 进位10000000
- HDU 1250 Hat's Fibonacci(Java大数相加)+讲解
- hdu 1250 Hat's Fibonacci (Java大数)
- HDU 1250 Hat's Fibonacci(递推+大数加法)
- HDU 1250 Hat's Fibonacci(大数相加)
- HDOJ/HDU 1250 Hat's Fibonacci(大数~斐波拉契)
- android新的UI调试工具
- JPA的CRUD操作,映射实体
- DP 入门提练习解题报告
- Android入门:File文件存储
- 图片缓存管理
- HDU 1250Hat's Fibonacci(两种方法处理大数)
- JPA的关系映射和JPQL查询
- 微信公共平台开发接收与发送信息类型
- EJB
- insmod不匹配问题的解决
- ckeditor用户自定义配置文件config.js
- IOS开发者账号的相关配置
- ViewFlow嵌套在ViewPager事件冲突的解决
- CVS,SVN,Maven的服务器端配置和客户端使用详解(毛伟)