hdu 4565
来源:互联网 发布:log4j xml配置sql语句 编辑:程序博客网 时间:2024/06/17 00:38
矩阵快速幂
1、http://acm.hdu.edu.cn/showproblem.php?pid=4565
2、
So Easy!
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 187 Accepted Submission(s): 67
Problem Description
A sequence Sn is defined as:
Where a, b, n, m are positive integers.┌x┐is the ceil of x. For example, ┌3.14┐=4. You are to calculate Sn.
You, a top coder, say: So easy!
Where a, b, n, m are positive integers.┌x┐is the ceil of x. For example, ┌3.14┐=4. You are to calculate Sn.
You, a top coder, say: So easy!
Input
There are several test cases, each test case in one line contains four positive integers: a, b, n, m. Where 0< a, m < 215, (a-1)2< b < a2, 0 < b, n < 231.The input will finish with the end of file.
Output
For each the case, output an integer Sn.
Sample Input
2 3 1 20132 3 2 20132 2 1 2013
Sample Output
4144
Source
2013 ACM-ICPC长沙赛区全国邀请赛——题目重现
Recommend
zhoujiaqi2010
3、代码:
#include <cstdlib>#include <cstring>#include <cstdio>#include <iostream>#include<math.h>using namespace std;#define ll long longint aa,b,n,m;struct matrix{ ll a[2][2];} origin,res;matrix multiply(matrix x,matrix y){ matrix temp; memset(temp.a,0,sizeof(temp.a)); for(int i=0; i<2; i++) { for(int j=0; j<2; j++) { for(int k=0; k<2; k++) { temp.a[i][j]+=(((x.a[i][k])%m)*((y.a[k][j])%m))%m; } temp.a[i][j]%=m; } } return temp;}void init(){ origin.a[0][0]=(2*(aa%m))%m; origin.a[0][1]=(b%m-((aa%m)*(aa%m))%m+m)%m; origin.a[1][0]=1; origin.a[1][1]=0; memset(res.a,0,sizeof(res.a)); res.a[0][0]=res.a[1][1]=1;}void calc(int N){ int n=N; while(n) { if(n&1) res=multiply(res,origin); n>>=1; origin=multiply(origin,origin); } matrix tmp,tmp2; tmp2.a[0][0]=(((2*(aa%m)*(aa%m))%m)%m+2*(b%m))%m; tmp2.a[0][1]=0; tmp2.a[1][0]=(2*(aa%m))%m; tmp2.a[1][1]=0; if(N==0) printf("%lld\n",tmp2.a[0][0]%m); else { tmp=multiply(res,tmp2); printf("%lld\n",tmp.a[0][0]%m); }}int main(){ while(cin>>aa>>b>>n>>m) { if(n==1) { printf("%lld\n", (ll)ceil((aa*1.0+sqrt(b*1.0))*1.0)%m); } else { init(); calc(n-2); } } return 0;}/*2 3 10 20132 3 2 20132 2 1 2013*/
- hdu 4565
- hdu 4565
- HDU 4565 So Easy!
- hdu 4565 So Easy!
- HDU 4565 So Easy!
- hdu 4565 So Easy!
- HDU 4565 So Easy!
- hdu 4565 So Easy!
- HDU 4565 So Easy!
- hdu 4565 So Easy!
- hdu 4565So Easy!
- hdu 4565 So Easy!
- HDU 4565 So Easy!
- HDU 4565 So Easy!
- hdu 4565 So Easy!
- hdu 4565 SoEasy!
- HDU 4565解题报告
- HDU 4565 SO easy!
- Django 关于POST 返回403 无法连接的解决办法 (亲测)
- C++面试题
- POJ 1386 Play on Words
- 详细解析Java中抽象类和接口的区别
- 有了互斥量,为什么还需要条件变量?
- hdu 4565
- 黑马程序员——单例设计模式和模板方法设计模式
- 使用ptrace跟踪进程
- 程序员:伤不起的三十岁
- 水池数目 结题报告
- 常量指针和指针常量 大端小端的记法
- spinlock与linux内核调度的关系
- Wget (Linux File Downloader)使用详解
- 自增自减、关系表达式