CodeVs 3150 (大数 + 递推)
来源:互联网 发布:萧然网络问政瓜沥 编辑:程序博客网 时间:2024/06/15 23:28
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<algorithm>#include<map>#include<set>#include<vector>#include<queue>#include<stack>//#include<bits/std c++.h>using namespace std;typedef long long LL;typedef unsigned long long ULL;const LL MOD = 1e7 + 7;const LL maxn = 1e6 + 131;const LL Bits = 1e10;const double Pi = acos(-1.0);struct BigInt{ vector<LL> val; void Set(LL n) { val.clear(); val.push_back(n); } void operator += (const BigInt a) { int i; for(i = 0; i < val.size() && i < a.val.size() ; ++i) val[i] = val[i] + a.val[i]; if(i < a.val.size()) for(; i < a.val.size(); ++i) val.push_back(a.val[i]); int len = val.size(); for(i = 0; i < len; ++i) { if(val[i] >= Bits) { if(i == len-1) val.push_back(val[i]/Bits), val[i] %= Bits; else { val[i+1] += (val[i] / Bits); val[i] %= Bits; } } } } void operator *= (const LL k) { int i; for(i = 0; i < val.size(); ++i) val[i] *= k; i = 0; while(i != val.size()) { if(val[i] >= Bits) { if(i == val.size() -1) { val.push_back(val[i] / Bits); val[i] %= Bits; } else { val[i+1] += (val[i] / Bits); val[i] %= Bits; } } ++i; } } void operator /= (const LL k) { for(int i = val.size() - 1; i >= 1; --i) { val[i-1] += (val[i] % k)*Bits; val[i] /= k; } val[0] /= k; int i = val.size() - 1; while(val.size() > 1) { if(val[i] == 0) val.erase(--val.end()); else break; i--; } } void Show() { cout << val[val.size() - 1]; for(int i = val.size() - 2; i >= 0 ; --i) { LL k = Bits / 10; while( k > 1 ) { if(val[i] < k) cout << "0"; k /= 10; } cout << val[i]; } cout << endl; }};int main(){ BigInt A, B; LL n; /*A.Set(1), B.Set(Bits - 1); A += B; A.Show();*/ //cout << Pi << endl; while(cin >> n){ if(n < 4) cout << "1\n"; else { n -= 4; A.Set(1), B.Set(1); LL i = 1, j = (n + Pi), Last; while(i <= (LL)((n + Pi)/ Pi)) { Last = j; j = (n + Pi - i*Pi); for(LL k = Last - 1; k >= j + 1; k--) { B *= (k+1); B /= (i + k); } B *= (j + 1); B /= i; i ++; A += B; } A.Show(); } } return 0;}
0 0
- CodeVs 3150 (大数 + 递推)
- 大数加法(递推)
- hdu1297Children’s Queue(递推+大数)
- UVA10359 - Tiling(递推 + 大数)
- POJ2506 Tiling(递推+大数)
- POJ 2506 Tiling (大数+递推)
- hdu1041Computer Transformation(递推+大数模板)
- 1sting(JAVA大数+ 递推)
- 大数递推
- poj2506 大数递推
- 大数+递推
- UVA11375 递推+大数
- Codevs 递推 合集
- SOJ 2209 递推 大数
- HDU1592(递推+大数处理)
- HDU 1041(递推+大数)
- UVA11375火柴(递推+大数)
- 2506Tiling(大数递推)
- LA 6893 矩阵HASH (模板)
- IOS 开发环境,证书和授权文件是什么?
- Fragment的使用(四)
- CodeVs 1009
- POJ 1006 同余方程组
- CodeVs 3150 (大数 + 递推)
- Jquery+Pdo编写login登陆界面
- HDU 5377 (Exgcd + 原根)
- HDU 1695 GCD
- HDU 1796 (容斥原理)
- HDU 1069
- HDU 1074 (DP + 状态压缩)
- Hadoop快速入门
- mysql slave从库负载均衡方案选择