hdu 4565 So Easy!(构造矩阵快速幂)
2013-08-09 10:13
363 查看
So Easy!
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 842 Accepted Submission(s): 228
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!
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 2013 2 3 2 2013 2 2 1 2013
Sample Output
4 14 4
Source
2013
ACM-ICPC长沙赛区全国邀请赛——题目重现
Recommend
zhoujiaqi2010
题解:构造矩阵快速幂
#include<stdio.h> long long a,b,n,m,c[2]; struct point{ long long a[2][2]; }e,res; void init() { e.a[1][1]=2*a%m; e.a[0][1]=(b-a*a)%m; res.a[0][1]=res.a[1][0]=e.a[0][0]=0; res.a[0][0]=res.a[1][1]=e.a[1][0]=1; } struct point mult(struct point x,struct point y) { struct point temp; int i,j,k; for(i=0;i<2;i++) { for(j=0;j<2;j++) { for(temp.a[i][j]=k=0;k<2;k++) temp.a[i][j]=(temp.a[i][j]+x.a[i][k]*y.a[k][j]%m)%m; } } return temp; }; void solve() { n--; while(n) { if(n&1) res=mult(res,e); e=mult(e,e); n>>=1; } } void output() { c[0]=(2*a)%m; c[1]=(2*a*a%m+2*b%m)%m; c[0]=((c[0]*res.a[0][0])%m+c[1]*res.a[1][0])%m; printf("%lld\n",(c[0]+m)%m); } int main() { while(scanf("%lld%lld%lld%lld",&a,&b,&n,&m)>0) { init(); solve(); output(); } return 0; }
相关文章推荐
- HDU 4565 So Easy!
- HDU 4565 So Easy!(数学+矩阵快速幂)
- HDU 4565 So Easy!
- Hdu 4565 So easy! 2013长沙邀请赛
- HDU 4565 So Easy!
- HDU 4565 -- So Easy! (矩阵幂模板)
- HDU 4565 So Easy!(思想+矩阵快速幂)——2013 ACM-ICPC长沙赛区全国邀请赛
- Hdu 4565 So Easy! (数学 构造矩阵)
- HDU 4565 So Easy!(矩阵快速幂)
- HDU 4565 So Easy!(公式化简+矩阵)
- hdu 4565 So Easy! (共轭构造+矩阵快速幂)
- 2013长沙邀请赛 HDU 4565 So Easy!(矩阵快速幂)
- HDU 4565 So Easy! 矩阵快速幂 + 共轭数
- HDU 4565 -- So Easy! 数学 && 2013 ACM-ICPC 长沙赛区全国邀请赛 A题
- HDU 4565 So Easy!(矩阵快速幂+数学)
- hdu 4565 So Easy! 递推+矩阵快速幂
- HDU 4565 So Easy!
- hdu 4565 So Easy!(矩阵快速幂)
- hdu 4565 - so easy
- HDU - 4565_So Easy!_共轭构造&&矩阵快速幂