UVa 495【大数加法】
求第n位斐波那契数列,n<=5000。
还是大数问题,这次是大数加法。仿照UVa 623的解法来做。623位数可以一位一位的增,但是这个需要预先给够位数,要是按六位存一个数组元素里面的话,300位足够了,粗算一下n=5000大概有1044位,len=300*6足够存下了。就是不知道最后输出答案时我让pos初始为len为什么会WA,这个初始化对结果有影响?
#include<iostream>
#include<cstdio>
#define mod 1000000
using namespace std;
const int maxn = ;
const int len = ;
int f[maxn][maxn]; int main()
{
f[][] = , f[][] = ;
for (int i = ; i <= ; i++)
{
int c = ;
for (int j = ; j <= len; j++)
{
int t = f[i - ][j] + f[i - ][j]+c;
f[i][j] = t%mod;
c = t / mod;
}
}
int n;
while (scanf("%d",&n)==)
{
int pos = ;//从0开始,从len开始会WA,不太懂
for (int i = len; i >= ; i--) {
if (f[n][i] > ) {
pos = i; break;
}
}
printf("The Fibonacci number for %d is ", n);
printf("%d", f[n][pos]);
for (int i = pos - ; i >= ; i--)
printf("%06d", f[n][i]);
printf("\n");
}
return ;
}
Uva 495
好吧,用Python写就几行。。。
fib=[,]
for i in range():
fib+=[fib[-]+fib[-]]
while True:
try:
n=int(input())
print("The Fibonacci number for {0} is {1}".format(n,fib[n]))
except:
break
UVa 495 Python
其实Java也不长。。。。
import java.math.BigInteger;
import java.util.*;
class Main{
public static void main(String[] args){
Scanner in =new Scanner (System.in);
BigInteger ans[]=new BigInteger[];
ans[]=BigInteger.ZERO;
ans[]=BigInteger.ONE;
for(int i=;i<=;i++)
ans[i]=ans[i-].add(ans[i-]);
while(in.hasNext()){
int n=in.nextInt();
System.out.println("The Fibonacci number for "+ n +" is " + ans[n]);
}
}
}
UVa 495 Java
UVa 495【大数加法】的更多相关文章
- 51nod 1005 大数加法
#include<iostream> #include<string> using namespace std; #define MAXN 10001 },b[MAXN]={} ...
- c#大数加法
在C#中,我们经常需要表示整数.但是,c#的基本数据类型中,最大的long也只能表示-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807之间的数 ...
- 玲珑杯1007-A 八进制大数加法(实现逻辑陷阱与题目套路)
题目连接:http://www.ifrog.cc/acm/problem/1056 DESCRIPTION Two octal number integers a, b are given, and ...
- Leetcode 67 Add Binary 大数加法+字符串处理
题意:两个二进制数相加,大数加法的变形 大数加法流程: 1.倒置两个大数,这一步能使所有大数对齐 2.逐位相加,同时进位 3.倒置两个大数的和作为输出 class Solution { public: ...
- HDU1002大数加法
大数加法 c++版: #include <map> #include <set> #include <stack> #include <queue> # ...
- java实现大数加法、乘法(BigDecimal)
之前写过用vector.string实现大数加法,现在用java的BigDecimal类,代码简单很多.但是在online-judge上,java的代码运行时间和内存大得多. java大数加法:求a+ ...
- vector、string实现大数加法乘法
理解 vector 是一个容器,是一个数据集,里边装了很多个元素.与数组最大的不同是 vector 可以动态增长. 用 vector 实现大数运算的关键是,以 string 的方式读入一个大数,然后将 ...
- 【大数加法】POJ-1503、NYOJ-103
1503:Integer Inquiry 总时间限制: 1000ms 内存限制: 65536kB 描述 One of the first users of BIT's new supercompu ...
- A + B Problem II 大数加法
题目描述: Input The first line of the input contains an integer T(1<=T<=20) which means the number ...
随机推荐
- Leetcode476.Number Complement数字的补数
给定一个正整数,输出它的补数.补数是对该数的二进制表示取反. 注意: 给定的整数保证在32位带符号整数的范围内. 你可以假定二进制数不包含前导零位. 示例 1: 输入: 5 输出: 2 解释: 5的二 ...
- 几个树形dp
1.重建道路 树形dp基础题,f[i][j]表示在i这个点我和我的子树联通块大小为j最少砍几条边. 转移的时候,到下一个子树时上一个子树所有答案先++(此树直接砍掉不贡献答案),再继续dp. 注意更新 ...
- Yii 网站上线不需手动配置
参考: http://www.cnblogs.com/x3d/p/php_auto_prepend_file.html
- Nginx 函数解析之ngx_http_get_forwarded_addr_internal
static ngx_int_t ngx_http_get_forwarded_addr_internal(ngx_http_request_t *r, ngx_addr_t *addr, u_cha ...
- 强强联合 阿里云 RDS for SQL Server 与 金蝶 K/3 WISE 产品实现兼容适配
强强联合 阿里云 RDS for SQL Server 与 金蝶 K/3 WISE 产品实现兼容适配,原K/3 WISE用户通过简单配置就可以无缝搭配RDS SQL Server使用,不需再费时费力自 ...
- js实现翻转一个字符串
字符串作在程序中是非常常见的,因为程序中绝大部分的数据都可以当作字符串来处理.在这里介绍几种翻转字符串的方法. (1)使用字符串函数 //使用数组翻转函数 function reverseString ...
- Devexpress 中控件及GridView控件的Cell增加右键复制功能
a) GridView中任何一个Cell增加右键复制功能GridHitInfo gridHitInfo = new GridHitInfo(); //用户接收GridView中单元格数据void gr ...
- PrintStream 类
5.PrintStream类(重点) (1)基本概念 java.io.PrintStream类用于打印各种数据内容. (2)常用的方法 PrintStream(OutputStream out) ...
- jQuery 图片上传
1. 概述 1.1 说明 在一些前后端不分离的项目中,经常有一些需要把文件或者图片上传的功能,故记录此代码以便后期使用. 1.2 要求 1.上传,10M以内,限bmp,jpg,png,jpeg等图片格 ...
- Vue动态加载异步组件
背景: 目前我们项目都是按组件划分的,然后各个组件之间封装成产品.目前都是采用iframe直接嵌套页面.项目中我们还是会碰到一些通用的组件跟业务之间有通信,这种情况下iframe并不是最好的选择,if ...