• NOI2013矩阵游戏


    这就是区分高中生和小学生爸爸的题目吧。

    推导扣一个网上的式子吧

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int mod=1e9+7;
     4 typedef long long ll;
     5 ll a,b,c,d;
     6 ll qmod(ll x,ll y)
     7 {
     8     ll ans=1;
     9     while(y)
    10     {
    11         if(y&1)ans=x*ans%mod;
    12         x=x*x%mod;y>>=1;
    13     }
    14     return ans;
    15 }
    16 struct numb
    17 {
    18     ll pow,mul;
    19     numb(){pow=mul=0;}
    20 }n,m;
    21 numb read()
    22 {
    23     char ch;ch=getchar();numb a;
    24     while(ch>'9'||ch<'0')ch=getchar();
    25     while(ch<='9'&&ch>='0')
    26     {
    27         a.mul=(a.mul*10%mod+ch-'0')%mod;
    28         a.pow=(a.pow*10%(mod-1)+ch-'0')%(mod-1);
    29         ch=getchar();
    30     }
    31     return a;
    32 }
    33 int main()
    34 {
    35     n=read();m=read();
    36     scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
    37     if(a==1)
    38     {
    39         b=(c*b%mod*(m.mul-1)%mod+d)%mod;
    40         a=c;
    41     }
    42     else
    43     {
    44         b=(b*(qmod(a,m.pow-1)-1)%mod*qmod(a-1,mod-2)%mod*c%mod+d)%mod;
    45         a=c*qmod(a,m.pow-1)%mod;
    46     }
    47     if(a==1)
    48     {
    49         b=(1+b*n.mul%mod)%mod;
    50     }
    51     else
    52     {
    53         b=(qmod(a,n.pow)+b*(qmod(a,n.pow)-1)%mod*qmod(a-1,mod-2)%mod)%mod;
    54     }
    55     printf("%lld
    ",(b-d+mod)%mod*qmod(c,mod-2)%mod);
    56     return 0;
    57 }
  • 相关阅读:
    Java StringBuffer 和 StringBuilder 类
    Java String 类
    Java Character 类
    windows server R2 搭建ftp服务
    虫师的使用经验
    Linux 使用NC命令监听本地端口
    MYSQL让别人远程访问自己的数据库
    crontab
    tomcat日志切割脚本
    测试分布式部署页面sso
  • 原文地址:https://www.cnblogs.com/nbwzyzngyl/p/8484101.html
Copyright © 2020-2023  润新知