首页 > 其他分享 >P2044 [NOI2012] 随机数生成器

P2044 [NOI2012] 随机数生成器

时间:2022-10-24 18:33:07浏览次数:70  
标签:res jz 生成器 ll ans matix P2044 NOI2012 basic

#include <iostream>
#include <cstring>
using namespace std;
typedef long long ll;
ll mod , a , c , x , n , g;
namespace ksc{
    ll ksc ( ll x , ll y )
    {
        ll res=0;
        while ( y )
        {
            if ( y & 1 )
                res = res + x , res %= mod;
            x <<= 1;
            x%=mod;
            y >>= 1;
        }
        return res;
    }
}
struct jz
{
    ll matix [ 3 ] [ 3 ] ;
    ll n,m;
    jz(){memset ( matix , 0 , sizeof ( matix ) ); n = m = 0 ; }
    void init ()
    {
        matix [ 1 ] [ 1 ] = matix [ 2 ] [ 2 ] = 1;
        n = m = 2;
    }
};
namespace jzcf
{
    jz cf ( jz x , jz y )
    {
        jz z;
        for ( int i = 1; i <= x.n; i ++ )
        for ( int j = 1; j <= y.m; j ++ )
        {
            for ( int k = 1; k <= x.m; k ++ )
                z . matix [ i ] [ j ] += ksc :: ksc ( x . matix [ i ] [ k ] , y . matix [ k ] [ j ] ),z . matix [ i ] [ j ] %=mod;
        }
        z . n = x . n;
        z . m = y . m;
        return z;
    }
    jz ksm ( jz x , ll y )
    {
        jz z;
        z . init();
        while ( y )
        {
            if ( y & 1 ) z = cf ( x , z );
            x = cf ( x , x );
            y >>= 1;
        }
        return z;
    }
}
int main()
{
    //freopen ( "text.in" , "r" , stdin );
    cin >> mod >> a >> c >> x >> n >> g ;
    jz ans , basic;
    ans . matix [ 1 ] [ 1 ] = x;
    ans . matix [ 1 ] [ 2 ] = c;
    basic . matix [ 1 ] [ 1 ] = a;
    basic . matix [ 1 ] [ 2 ] = 0;
    basic . matix [ 2 ] [ 1 ] = 1;
    basic . matix [ 2 ] [ 2 ] = 1;
    ans . n = 1;
    ans . m = 2;
    basic . n = basic . m = 2;
    basic = jzcf :: ksm( basic , n ) ;
    ans = jzcf :: cf ( ans , basic );
    cout << ans . matix [ 1 ] [ 1 ] % g << endl;
    return 0;
}

标签:res,jz,生成器,ll,ans,matix,P2044,NOI2012,basic
From: https://www.cnblogs.com/dadidididi/p/16822380.html

相关文章

  • ES6生成器函数2
    //模拟获取用户数据订单数据和商品数据functiongetUsers(){setTimeout(()=>{letdata="用户数据";//......
  • ES6生成器
    //生成器就是一个特殊的函数function*gen(params){console.log("111");yield'两只老虎';console.log("......
  • php生成器Generator以及yield到底是什么?
    2022年10月14日08:23:35yield关键字生成器函数的核心是yield关键字。它最简单的调用形式看起来像一个return申明,不同之处在于普通return会返回值并终止函数的执行,而yiel......
  • 中国制霸生成器「GitHub 热点速览 v.22.42」
    火遍推特的中国制霸生成器本周一开源就占据了两天的GitHubTrending榜,不知道你的足迹遍布了多少个省份呢?同样记录痕迹的kanal用了内存读写方式解决了Rust的消息处理......
  • Qt制作图表生成器
    ​ 基于Qt中的QCharts模块制作图表生成器软件该软件可制作多种图表​多样化主题设置​保存移植便捷快速​ 输入相关数据,自动生成对应图表饼图​柱状图​......
  • JavaScript中的Generator生成器的基本用法
    ES6入门-阮一峰:Generator函数1.介绍Generator生成器是ES6提供的一种异步编程解决方案。是一个极为灵活的结构,拥有在函数块中暂停和恢复代码执行的能力。执行Gen......
  • 题解 P5527 [Ynoi2012] NOIP2016 人生巅峰
    人生第一道Ynoi,同时也是1k通过。不卡常不难写,小清新Ynoi真的不多见了。前置知识:抽屉原理,树状数组,bitset,动态规划基础。首先考虑一个事实,当这个区间够长是必然有解的......
  • 洛谷 P3224 [HNOI2012]永无乡 题解
    查询第\(k\)小值想到权值线段树。合并操作想到线段树合并。维护连通性想到并查集。并查集合并方向应与线段树合并方向一致。查询时,先求出并查集的根再在线段树上询......
  • ES生成器函数使用实例
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content......
  • 随机密码生成器,排除易混淆字母LIO大小写以及数字0
    //排除容易混淆的iI(i)lL(L)oO(o)0(零)functionrandomPassword(type,size){varseed=newArray('A','B','C','D','E','F','G','H','J','K','M','N&......