• 2017 Multi-University Training Contest 6.Funny Function(快速幂)


    链接:http://acm.hdu.edu.cn/showproblem.php?pid=6050

    分析:最简单的做法就是一个个求。。先求出F1,n=[2^n-(-1)^n]/3,然后F2,n就是对上面的N项求和,结果是F2,n=[(2^N-1)*2^n+((-1)^N-1)/2*(-1)^n]/3,向下归纳证明,Fm,n=[(2^N-1)^(m-1)*2^n+(((-1)^N-1)/2)^(m-1)*(-1)^n]/3,直接快速幂搞一下就出来了。。

    标答是利用矩阵。

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 using namespace std;
     5 const int p=1e9+7;
     6 typedef unsigned long long ll;
     7 ll qpow(ll a,ll n){
     8     ll res=1,y=a,k=1;
     9     while(k!=0&&k<=n){
    10         if(k&n){
    11             res=(res*y)%p;
    12         }
    13         y=(y*y)%p;
    14         k<<=1;
    15     }
    16     return res;
    17 }
    18 int main(){
    19     //freopen("e:\in.txt","r",stdin);
    20     int t;
    21     ll n,m;
    22     scanf("%d",&t);
    23     while(t--){
    24         cin>>n>>m;
    25         ll ans=0;
    26         ll x;
    27         x=qpow(2,n);
    28         x=(x+p-1)%p;
    29         ans=(qpow(x,m-1)*2)%p;
    30         if(n%2==1){
    31             ans=(ans+1)%p;
    32         }
    33         ans=(ans*333333336)%p;
    34         cout<<ans<<endl;
    35     }
    36     return 0;
    37 }
  • 相关阅读:
    Training: WWW-Robots
    Training: Stegano I
    Encodings: URL
    利用Nginx实现域名转发 不修改主机头
    C++删除目录和复制目录函数
    获取文件大小的函数
    日志打印函数
    拉起上级目录程序
    安卓TabHost页面
    有趣的人形时钟
  • 原文地址:https://www.cnblogs.com/7391-KID/p/7249894.html
Copyright © 2020-2023  润新知