zoukankan      html  css  js  c++  java
  • 2013 ACM-ICPC长沙赛区全国邀请赛——A So Easy!

    这题在比赛的时候不知道怎么做,后来看了别人的解题报告,才知道公式sn=(a+sqrt(b))^n+(a-sqrt(b))^n;

    具体推导

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<algorithm>
     4 #include<iomanip>
     5 #include<cmath>
     6 #include<string>
     7 using namespace std;
     8 struct ma
     9 {
    10     __int64 a[2][2];
    11     void init()
    12     {
    13         a[0][0]=a[1][1]=1;
    14         a[0][1]=a[1][0]=0;
    15     }
    16 };
    17 int mod;
    18 ma mul(ma a,ma b)
    19 {
    20     ma ans;
    21     int i,j,k;
    22     for(i=0;i<2;i++)
    23         for(j=0;j<2;j++)
    24         {
    25             ans.a[i][j]=0;
    26             for(k=0;k<2;k++)
    27                 ans.a[i][j]=(ans.a[i][j]%mod+((a.a[i][k]%mod)*(b.a[k][j]%mod)%mod))%mod;
    28         }
    29     return ans;
    30 }
    31 ma pows(ma a,__int64 n)
    32 {
    33     ma ans;
    34     ans.init();
    35     while(n)
    36     {
    37         if(n&1)
    38             ans=mul(ans,a);
    39         n>>=1;
    40         a=mul(a,a);
    41     }
    42     return ans;
    43 }
    44 int main()
    45 {
    46     int a,b,n;
    47     __int64 sum,q,s;
    48     while(scanf("%d%d%d%d",&a,&b,&n,&mod)!=EOF)
    49     {
    50         ma p,ans;
    51         s=2*a%mod;
    52         p.a[0][0]=s;
    53         p.a[0][1]=(b-a*a)%mod;
    54         p.a[1][0]=1;
    55         p.a[1][1]=0;
    56         q=((2*a*a)%mod+2*b%mod)%mod;
    57         ans=pows(p,n-1);
    58         sum=(((ans.a[1][0]%mod)*(q%mod))%mod+((ans.a[1][1]%mod)*(s%mod)))%mod;
    59         if(sum<0) sum=(sum+mod)%mod;
    60         printf("%I64d
    ",sum);
    61     }
    62     return 0;
    63 }
    View Code
  • 相关阅读:
    11个有用的移动网页开发App和HTML5框架
    移动平台前端开发总结(针对iphone,Android等手机)
    uploadify按钮中文乱码问题
    @page指令 validateRequest的作用
    C#,.net获取字符串中指定字符串的个数、所在位置与替换字符串
    lambda函数
    主函数
    Python函数
    猴子
    旋转
  • 原文地址:https://www.cnblogs.com/xin-hua/p/3197838.html
Copyright © 2011-2022 走看看