hdu 4565 So Easy!

來源:互聯網
上載者:User

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題目分析: 

題目要求這個得值

但是模數前有更號,所以無法直接計算,我們發現

0< a, m < 215, (a-1)2< b < a2, 0 < b, n < 231

所以 0 <a+sqrt( b ) < 1

可得運算式:,由二項式展開可知等號右邊一坨是整數並且加的數小於一,所以等式成立

然後我們設 Kn 為為等號的左邊,將運算式化為遞推形式後,再利用矩陣連乘來解決 Kn 的問題

轉化過程就是移兩次項,每次都將指數約去即可化簡

# include<iostream># include<cstdio># include<cstring>typedef __int64 ll;using namespace std;ll n,m,a,b;struct node{   ll x[2][2];} op;node cheng(node a,node b){    node t;    int i,j,k;    for (i=0;i<2;i++)    for (j=0;j<2;j++)    {        ll sum=0;        for (k=0;k<2;k++)        sum=(sum+(ll)a.x[i][k]*b.x[k][j])%m;        t.x[i][j]=sum;    }    return t;}int main(){    while (~scanf("%I64d%I64d%I64d%I64d",&a,&b,&n,&m))    {        ll x,y;        x=(2*a)%m; y=(2*(a*a+b))%m;        op.x[0][0]=(2*a)%m; op.x[0][1]=1;        op.x[1][0]=((b-a*a%m)+m)%m;//不要掉了這裡的+m         op.x[1][1]=0;        if (n==1) { printf("%I64d\n",x); continue;};        if (n==2) { printf("%I64d\n",y); continue;};        node ans;        ans=op;        n=n-3;        while (n)        {            if (n&1) op=cheng(op,ans);            ans=cheng(ans,ans);            n=n/2;        }        printf("%I64d\n",(op.x[0][0]*y+op.x[1][0]*x)%m);    }    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.