UVA - 10183 - How Many Fibs? (斐波那契 + 高精度)

题目传送:UVA - 10183

思路:高精度就可以了,因为10^100以内的斐波那契数不多,根据公式来看,估计就500多,开个1000的数组足够啦,实现的话是用的java,注意这里的斐波那契是从1开始的,我一开始是从0开始的,wa了一下

AC代码:

import java.util.Scanner;
import java.math.BigInteger;

public class Main {
	public static void main(String args[]) {
		Scanner cin = new Scanner(System.in);
		BigInteger a, b;

		BigInteger[] fibo = new BigInteger[1005];
		fibo[0] = new BigInteger("1");
		fibo[1] = new BigInteger("2");
		for(int i = 2; i < 1005; i ++) {
			fibo[i] = fibo[i - 2].add(fibo[i - 1]);
		}

		while(true) {
			a = cin.nextBigInteger();
			b = cin.nextBigInteger();
			if(a.compareTo(BigInteger.ZERO) == 0 && b.compareTo(BigInteger.ZERO) == 0) {
				break;
			}

			int ans = 0;
			for(int i = 0; i < 1005; i ++) {
				if(fibo[i].compareTo(a) != -1 && fibo[i].compareTo(b) != 1) {
					ans ++;
				}
			}
			System.out.println(ans);
		}
	}
}
时间: 2024-10-18 07:42:05

UVA - 10183 - How Many Fibs? (斐波那契 + 高精度)的相关文章

斐波拉契高精度(洛谷1255)

分析:第n次的台阶数为dp[n],则dp[n]=dp[n-1]+dp[n-2]; 1 // 2 // main.cpp 3 // 1601 4 // 5 // Created by wanghan on 16/10/12. 6 // Copyright © 2016年 wanghan. All rights reserved. 7 // 8 9 #include<cstdio> 10 #include<cstring> 11 #include<vector> 12 #i

二刷斐波那契高精度

#include<bits/stdc++.h> using namespace std; struct bign{ int d[10000]; int len; bign(){ memset(d,0,sizeof(d)); len = 0; } }; //字符串转到大数中 bign change(char *s){ bign a; a.len = strlen(s); for(int i=0; i<a.len; i++){ a.d[i] = s[a.len - 1 - i] - '0';

hdu 1316 How many Fibs?(高精度斐波那契数)

//  大数继续 Problem Description Recall the definition of the Fibonacci numbers: f1 := 1 f2 := 2 fn := fn-1 + fn-2 (n >= 3) Given two numbers a and b, calculate how many Fibonacci numbers are in the range [a, b]. Input The input contains several test cas

数论 : 高精度 --- UVa 10183 : How Many Fibs ?

How many Fibs? Description Recall the definition of the Fibonacci numbers: f1 := 1 f2 := 2 fn := f n-1 + f n-2 (n>=3) Given two numbers a and b, calculate how many Fibonacci numbers are in the range [a,b]. Input The input contains several test cases.

UVA 11885 - Number of Battlefields(斐波那契)

11885 - Number of Battlefields 题意:给周长,求能围成的战场数目,不包括矩形. 思路:具体的递推没递推出来,但是看了网上一个规律,如果包括矩形的答案应该是斐波那契数列(但是奇数情况为0),然后减去矩形数目就是答案,矩形数目为n / 2 - 1,用矩阵快速幂就能求了. 具体的递推过程哪位大神能指点下... 代码: #include <stdio.h> #include <string.h> const long long MOD = 987654321;

UVA 948 数的斐波那契进制表示

每个正整数都可以分解成斐波那契数列中的几个数相加-- 从大到小贪心法就可以了-- #include <iostream> #include <cstdio> #include <fstream> #include <algorithm> #include <cmath> #include <deque> #include <vector> #include <queue> #include <string

UVA - 11582 Colossal Fibonacci Numbers! (巨大的斐波那契数!)

题意:输入两个非负整数a.b和正整数n(0<=a,b<264,1<=n<=1000),你的任务是计算f(ab)除以n的余数,f(0) = 0, f(1) = 1,且对于所有非负整数i,f(i + 2) = f(i + 1) + f(i). 分析: 1.对于某个n取余的斐波那契序列总是有周期的,求出每个取值的n下的斐波那契序列和周期. 2.ab对T[n]取余,即可确定对n取余的斐波那契序列中f(ab)的位置. #pragma comment(linker, "/STACK:

UVA 11582 Colossal Fibonacci Numbers! 大斐波那契数

大致题意:输入两个非负整数a,b和正整数n.计算f(a^b)%n.其中f[0]=f[1]=1, f[i+2]=f[i+1]+f[i]. 即计算大斐波那契数再取模. 一开始看到大斐波那契数,就想到了矩阵快速幂,输出等了几秒钟才输出完,肯定会超时.因为所有计算都是要取模的,设F[i]=f[i] mod n.F[0]=F[1]=1.只要出现F[i]=F[i+1]=1,那么整个序列就会重复.例如n=3,则序列为1,1,2,0,2,2,1,0,1,1……第九项和第十项都等于1,所以之后的序列都会重复. 至

UVA 4855 Hyper Box 斐波那契

题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2856 比赛的时候和陈看了好长时间才看明白题意,和吴讨论做了出来,其实吴确实聪明,脑袋瓜子比较灵活 题意:有一个N维的空间,给你各维的长度,有一些n维的砖块,把空间填满,砖块不能交叉,空间不能一部分为空:求最少用的砖块 砖块各维都必须为斐波那契长度 思路: 空间各维分