BZOJ 1002 - 奇妙的题目 + 高精度
来源:互联网 发布:淘宝网禁止出售药品 编辑:程序博客网 时间:2024/05/01 05:00
这道题有很多奇妙的方法可以搞。。最科学的当然是基尔霍夫矩阵(按照传统,“我也不知道是什么东西”),详见VFK教主的博客;还有乱七八糟的找规律,网上遍地都是。。我就把这题当作高精度练习题了。。
(你为什么又抄黄学长模板!?。。
// BZOJ 1002#include <cstdio>#include <cstring>#include <algorithm>using namespace std; const int maxN=100+5, N=100+5; #define rep(i,a,b) for (int i=a; i<=b; i++) #define dep(i,a,b) for (int i=a; i>=b; i--) #define read(x) scanf("%d", &x) #define fill(a,x) memset(a, x, sizeof(a)) struct Big_int { int len, a[maxN]; // 1..len -> 个 十 百 ... void init() { len=0; fill(a, 0); } } f[N]; int n; // 高精度处理流程:先把数搞出来,然后作进退位,最后处理最高位 Big_int mul(Big_int a, int k) { // 高精*单精 rep(i,1,a.len) a.a[i]*=k; rep(i,1,a.len) { a.a[i+1]+=a.a[i]/10; a.a[i]%=10; } while (a.a[a.len+1]!=0) a.len++; return a; } Big_int sub(Big_int a, Big_int b) { // 高精-高精(顺便+2) a.a[1]+=2; int j=1; while (a.a[j]>=10) a.a[j+1]++, a.a[j]%=10, j++; // 处理进位,勿忘j++! rep(i,1,a.len) { a.a[i]-=b.a[i]; if (a.a[i]<0) { a.a[i]+=10; a.a[i+1]--; } } while (a.a[a.len]==0) a.len--; return a; } int main(){ read(n); f[1].a[1]=1; f[2].a[1]=5; f[1].len=f[2].len=1; rep(i,3,n) f[i]=sub(mul(f[i-1], 3), f[i-2]); dep(i,f[n].len,1) printf("%d", f[n].a[i]); puts("");return 0;}
0 0
- BZOJ 1002 - 奇妙的题目 + 高精度
- BZOJ 2813 奇妙的Fibonacci
- BZOJ 题目1002 [FJOI2007]轮状病毒(高精度+基尔霍夫矩阵)
- TC SRM568,奇妙的题目
- BZOJ-1002 (高精度)
- BZOJ 2813 奇妙的Fibonacci 线性筛
- BZOJ 2813: 奇妙的Fibonacci 线性筛
- BZOJ 2813: 奇妙的Fibonacci 线性筛
- 高精度计算的相关题目
- BZOJ 1002: [FJOI2007]轮状病毒 高精度
- 【bzoj 1002】轮状病毒(高精度)
- bzoj 2813: 奇妙的Fibonacci 数学+线性筛
- bzoj有趣的题目
- 第六届蓝桥杯题目(java)-奇妙的数字
- BZOJ 1416: [NOI2006]神奇的口袋 高精度
- BZOJ 1002 FJOI2007 轮状病毒 递推+高精度
- bzoj 2056: gift? 高精度?
- bzoj 1263 高精度b
- ubuntu 将中文目录名改成英文
- Facebook-Infer 静态代码检查工具
- HashSet Integer输出有序,String输出无序
- HDU2021 发工资咯:)
- java equals
- BZOJ 1002 - 奇妙的题目 + 高精度
- android实现从系统图库中选择图片,设置到界面上的ImageView控件上。
- Set输出有序结果
- android小知识点汇总贴
- C语言培训总结
- ab "apr_socket_recv: Connection reset by peer" 错误解决
- java 子类重载父类
- 【跟我学spring 4.0 】之第七节-spring使用外部属性文件-spring配置连接oracle数据库
- idea 使用 问题