hdu1568
来源:互联网 发布:反编译软件 编辑:程序博客网 时间:2024/06/08 02:29
小范围暴力
大范围乱搞。。。。。。。。。。。
((1+√5)/2 )^n - ((1-√5)/2)^ n
--------------------------------
√5
变成
((1+√5)/2 )^n
------------------
√5
小范围本来可以暴力 我练了下矩阵快速幂
#include <cmath>#include <cstdio>#define MOD 100000000LL#define LL long long#define lp(i,j,k) for(int i = j;i <= k;++i)struct MATRIX {LL a[2][2];MATRIX (int x) {a[1][1] = a[0][0] = a[0][1] = a[1][0] = x;}MATRIX operator * (const MATRIX &b) {MATRIX re(0);lp(i,0,1)lp(j,0,1)lp(k,0,1)re.a[i][j] = (re.a[i][j] + a[i][k] * b.a[k][j]);while(re.a[1][1] >= MOD) {re.a[1][1] /= 10;re.a[0][1] /= 10;re.a[0][0] /= 10;re.a[1][0] /= 10;}return re;}}m(1);int n,t;double A = (sqrt(5.0) + 1) / 2;LL ksm (const MATRIX &n,int k) {if(k == -1)return 0;MATRIX p = m,re(1);re.a[1][0] = re.a[0][1] = 0;while(k) {if(k & 1)re = re * p;p = p * p;k >>= 1;}return re.a[0][0];}int main () {m.a[1][1] = 0;while(scanf("%d",&n) != EOF) {if(n <= 10000) {t = ksm(m,--n);while(t >= 10000)t /= 10;printf("%d\n",t);}else {double tt = n * log10(A) + (-0.5)*log10(5.0);tt = tt - (int)tt + 3;tt = pow(10.0,tt);printf("%d\n",(int)tt);}}}
0 0
- hdu1568
- HDU1568
- hdu1568
- hdu1568
- hdu1568
- hdu1568
- hdu1568
- hdu1568
- hdu1568
- HDU1568
- hdu1568-Fibonacci
- hdu1568-Fibonacci
- hdu1568 Fibonacci
- hdu1568 Fibonacci
- Fibonacci(hdu1568)
- Fibonacci (hdu1568)数学公式
- HDU1568(Fobonacci公式)
- 不太懂 fibonacci hdu1568
- 开源项目学习:Android-Universal-Image-Loader-Part3
- 详解Android App AllowBackup配置带来的风险
- 简明 Vim 练级攻略
- 133 - The Dole Queue
- 【PLSQL】package包的使用
- hdu1568
- sqlite语句
- 二哥学算法之排序
- HDU 2670 Girl Love Value
- Haproxy配置文件详解
- 求10个数中最大值
- oc_study17--property的简便方式
- 黑马程序员_JAVA中IO流-字节流与字符流比较与转换
- 156 - Ananagrams