HDU4990 Reading comprehension
发布日期:2021-06-29 05:37:43
浏览次数:2
分类:技术文章
本文共 1615 字,大约阅读时间需要 5 分钟。
Reading comprehension
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1895 Accepted Submission(s): 753
Problem Description
Read the program below carefully then answer the question.
#pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include<iostream> #include <cstring> #include <cmath> #include <algorithm> #include<vector> const int MAX=100000*2; const int INF=1e9; int main() { int n,m,ans,i; while(scanf("%d%d",&n,&m)!=EOF) { ans=0; for(i=1;i<=n;i++) { if(i&1)ans=(ans*2+1)%m; else ans=ans*2%m; } printf("%d\n",ans); } return 0; }
Input
Multi test cases,each line will contain two integers n and m. Process to end of file.
[Technical Specification] 1<=n, m <= 1000000000
Output
For each case,output an integer,represents the output of above program.
Sample Input
1 10
3 100
Sample Output
1
5
分析:题目给的程序的意思就是给了一个递推式,但是在奇数和偶数的时候递推式不同。写几个后可以发现规律,找出一个统一的递推式。1,2,5,10,21,42,85......其中的规律是f(n) = f(n-1) + f(n-2)*2 + 1。这样的话可以用矩阵快速幂来计算。如下图:
代码:
#include#include #include #include using namespace std;typedef long long ll;long long n, m;void f(ll a[][3], ll b[][3]){ ll c[3][3]; for(int i = 0; i < 3; i++){ for(int j = 0; j < 3; j++){ c[i][j] = 0; for(int k = 0; k < 3; k++){ c[i][j] += a[i][k]*b[k][j] % m; } c[i][j] %= m; } } for(int i = 0; i < 3; i++) for(int j = 0; j < 3; j++) a[i][j] = c[i][j];}int main(){ while(cin>>n>>m){ ll a[3][3] = {1,1,0, 2,0,0, 1,0,1}; ll b[3][3] = {0,0,1, 0,0,0, 0,0,0}; while(n){ if(n&1) f(b, a); f(a, a); n >>= 1; } cout< <
转载地址:https://blog.csdn.net/zhj_fly/article/details/75339384 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月05日 16时41分11秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
最新安装cocoapods过程实录
2019-04-29
.gitignore文件不起作用的解决办法 以及.DS_Store的处理
2019-04-29
xcode 高端花样注释
2019-04-29
ios 如何让导航栏上的左侧按钮靠左贴边显示,右侧按钮靠右贴边显示
2019-04-29
如何使用 Mac Android Studio 做安卓真机调试 详细配置步骤
2019-04-29
友盟崩溃分析方法
2019-04-29
如何实现 两个视图不同速率的平移
2019-04-29
iOS Emoji表情编码/解码
2019-04-29
NSStringEncoding关于文字编码问题的解决方法
2019-04-29
表情符号emojiUTF-8编码、Unicode、HTML显示
2019-04-29
podfile /表示什么 如何指定依赖库的版本
2019-04-29
CocoaPods --安装想要的版本 cocoapods指定版本
2019-04-29
iOS修改Navigation Bar上的返回按钮文本颜色,箭头颜色以及导航栏按钮的颜色
2019-04-29
关于 ES6箭头函数(多个连续的箭头函数与柯里化) a=>b=>{}
2019-04-29
Mac 终端显示git分支
2019-04-29
git 比较两个分支不同的commit
2019-04-29
Mac上搭建Web服务器--Apache
2019-04-29
横屏app如何设置
2019-04-29