博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1250
阅读量:4678 次
发布时间:2019-06-09

本文共 1324 字,大约阅读时间需要 4 分钟。

简单大数

(要压位,不然会超内存)

#include
#include
#include
#include
#include
using namespace std;const int base = 1000000;struct BigInt{ vector
Num; BigInt() { Num.clear(); } void Set(int n) { Num.clear(); Num.push_back(n); } BigInt operator + (const BigInt &a) const { BigInt c; int len1 = Num.size(), len2 = a.Num.size(); int i; for(i = 0; i < len1 && i < len2; ++i) c.Num.push_back(Num[i] + a.Num[i]); for(; i < len1; ++i) c.Num.push_back(Num[i]); for(; i < len2; ++i) c.Num.push_back(a.Num[i]); for(int i = 0; i < c.Num.size(); ++i) { if(c.Num[i] >= base) { if(i == c.Num.size() - 1) c.Num.push_back(c.Num[i] / base); else c.Num[i+1] += c.Num[i] / base; c.Num[i] %= base; } } return c; } void Print() { int len = Num.size(); printf("%d",Num[len-1]); for(int i = len - 2; i >= 0; --i) { int k = base / 10; while(Num[i] < k) { printf("0"); k /= 10; } printf("%d",Num[i]); } printf("\n"); }}N[500000];void Init(){ N[1].Set(1);N[2].Set(1); N[3].Set(1);N[4].Set(1); for(int i = 5; ; ++i) { N[i] = N[i-1] + N[i-2] + N[i-3] + N[i-4]; if(N[i].Num.size() * 5 > 2005) break; }}int main(){ Init(); int n; while(cin >> n) { N[n].Print(); } return 0;}

转载于:https://www.cnblogs.com/aoxuets/p/4747665.html

你可能感兴趣的文章
UVA-10689 Yet another Number Sequence (矩阵二分幂模板)
查看>>
element自定义表单验证
查看>>
Mysql 存储引擎的区别和比较
查看>>
vue管理平台的动态路由(后台传递路由,前端拿到并生成侧边栏)
查看>>
HDU 5412 CRB and Queries 动态整体二分
查看>>
TJU1044
查看>>
shell 查看系统信息
查看>>
Questions
查看>>
我和我的博客
查看>>
使用window.navigator.userAgent属性判断浏览器类型及版本
查看>>
js各种数字类型互转的方法
查看>>
noi.openjudge——2971 抓住那头牛
查看>>
【ueditor】api方法
查看>>
获取当前页面url并截取所需字段
查看>>
空格替换
查看>>
PHP笔记
查看>>
navicat Premium远程链接mysql报错
查看>>
Python -- Gui编程 -- Tkinter的使用 -- 菜单与画布
查看>>
C# 将html实体编码转换到正常字符 & #40;格式
查看>>
dom解析xml
查看>>