UVa 11582 - Colossal Fibonacci Numbers!(取模+周期)
2015-07-27 10:24
363 查看
计算第aba^b个斐波那契数对nn取模的值。对不同的nn取模,最长n2n^2就会出现循环。首先预处理计算所有可能的值,然后对每个输入快速幂取模找在周期中的位置输出。数据大必须用unsigned long long。
#include<cstdio> #include<vector> using namespace std; typedef unsigned long long LLU; const int maxn=1010; vector<int> f[maxn]; void init(){ for(int i=2;i<maxn;++i){ f[i].push_back(0); f[i].push_back(1%i); for(int j=2;;++j){ f[i].push_back((f[i][j-1]+f[i][j-2])%i); if(f[i][j-1]==0&&f[i][j]==1) break; } f[i].pop_back(),f[i].pop_back(); } return; } LLU modexp(LLU a,LLU b,LLU mod){ LLU cur=1,tmp=a; while(b){ if(b&1) cur=cur*tmp%mod; tmp=tmp*tmp%mod; b>>=1; } return cur; } int main(){ init(); int t;scanf("%d",&t); while(t--){ LLU a,b,n; scanf("%llu%llu%llu",&a,&b,&n); LLU k=LLU(f .size()); printf("%d\n",k?f [modexp(a%k,b,k)]:0); } return 0; }
相关文章推荐
- FPGA 里边所说的I/O BANK是个什么概念
- 排列组合
- 正则表达式
- correlated subquery and non-correlated subquery
- 读书笔记MoreEffectiveC++(14)
- 7月23日全球六大国际域名解析量统计报告
- 苹果自带的APP下载分析统计工具
- [LeetCode]Best Time to Buy and Sell Stock
- Cocos2d-x :什么是锚点?(简单点说:锚点就是图片的原点)
- 第一场训练赛UVALive 6907
- UVA 10285 - Longest Run on a Snowboard
- Android控件开发之GridView
- 学习网站
- 软件开发工具 (四)——技术
- eTerms3无法启动
- SQL SERVER 竖表变成横表
- android XML : unbound prefix
- matlab如何求矩阵行列式
- 玩转Android---UI篇---RadioButton(单选按钮)
- NYOJ 103 A+B Problem II(附带题目翻译)