zoukankan      html  css  js  c++  java
  • [NOI2012]随机数生成器

    题解:

    很显然是一道矩阵优化dp

    然而表示我很智障地把式子一个个带入

    然后就发现了为什么会有那些部分分(大概用扩欧是70吧)

    注意用矩阵计算的时候要用快速乘(当然想写高精那也随便,时间无限宽裕)

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    #define ll long long
    ll m,aa,c,x,n,g,mo1;
    struct re{
        ll jz[3][3];
    }a;
    ll ksc(ll x,ll y)
    {
        if (y==0) return(0);
        if (y==1) return(x);
        ll tmp=ksc(x,y/2);
        tmp=(tmp*2)%mo1;
        if (y%2==1) tmp=(tmp+x)%mo1;
        return(tmp);
    }
    re XX(re x,re y)
    {
        re tmp;
        memset(tmp.jz,0,sizeof(tmp.jz));
        for (ll i=1;i<=2;i++)
          for (ll j=1;j<=2;j++)
            for (ll k=1;k<=2;k++)
              tmp.jz[i][k]+=ksc(x.jz[i][j],y.jz[j][k]),
              tmp.jz[i][k]%=mo1;
        return(tmp);
    }
    re fast_pow(ll x)
    {
        if (x==1) return(a);
        re b=fast_pow(x/2);
        b=XX(b,b);
        if (x%2) b=XX(b,a);
        return(b);
    }
    int main()
    {
        cin>>mo1>>aa>>c>>x>>n>>g;
        a.jz[1][1]=aa; a.jz[1][2]=c;
        a.jz[2][1]=0; a.jz[2][2]=1;
        re cc=fast_pow(n);
        ll ans=((ksc(cc.jz[1][1],x)+cc.jz[1][2])%mo1)%g;
        cout<<ans;
        return 0;
    }
  • 相关阅读:
    JDK+Jmeter 环境搭建
    APP自动化中三大定位工具
    APP自动化环境配置
    pytest生成allure报告
    pytest怎么标记用例?
    pytest中怎么实现参数化?
    pytest中怎么引用前置中的变量
    pytest_前置后置
    toast文本提示信息元素获取
    js处理日历
  • 原文地址:https://www.cnblogs.com/yinwuxiao/p/8573039.html
Copyright © 2011-2022 走看看