首页 > 其他分享 >快速模

快速模

时间:2024-02-27 21:58:07浏览次数:19  
标签:fastmod u64 long u128 using 快速 define

https://www.luogu.com.cn/paste/8s8f62vl

#include<bits/stdc++.h>
#define ll long long
#define mxn 200003
#define pb push_back
#define mkp make_pair
#define ld long double
#define umap unordered_map
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define rept(i,a,b) for(int i=a;i<b;++i)
#define drep(i,a,b) for(int i=a;i>=b;--i)
#define pq priority_queue
using namespace std;
struct fastmod {
    using u64 = uint64_t;
    using u128 = __uint128_t;
    int f, l; u64 m, d;
    fastmod(u64 d): d(d) {
        l = 64 - __builtin_clzll(d - 1);
        const u128 one = 1;
        u128 M = ((one << (64 + l)) + (one << l)) / d;
        if(M < (one << 64)) f = 1, m = M;
        else f = 0, m = M - (one << 64);
    }
    friend u64 operator/(u64 n, const fastmod &m) { // get n / d
        if (m.f) return u128(n) * m.m >> 64 >> m.l;
        else {
            u64 t = u128(n) * m.m >> 64;
            return (((n - t) >> 1) + t) >> (m.l - 1);
        }
    }
    friend u64 operator%(u64 n, const fastmod &m) { // get n % d
        return n - n / m * m.d;
    }
};
fastmod md(998244353);
ll a,b;
signed main(){
	cin>>a>>b;
	cout<<a*b%md;
	return 0;
}

标签:fastmod,u64,long,u128,using,快速,define
From: https://www.cnblogs.com/zifanoi/p/18038477

相关文章

  • 支持快速生成API文档: Apipost
    API管理的难点在哪?相信无论是前端,还是后端的测试和开发人员,都遇到过这样的困难。不同工具之间数据一致性非常困难、低效。多个系统之间数据不一致,导致协作低效、频繁出问题,开发测试人员痛苦不堪。开发人员在Swagger定义好文档后,接口调试的时候还需要去Postman再定义一遍。......
  • 快速傅立叶变换
    快速傅立叶变换1引入现在有两个多项式$f(x)$,$g(x)$:$$f(x)=5x^2+3x+7\g(x)=7x^2+2x+1$$我们要求出两者相乘的结果,按照多项式相乘的运算法则,把每一项相乘,总复杂度为$O(n^2)$。这是传统算法能到达的最好复杂度。能不能进行优化呢?使用快速傅立叶变换,我们可以实现$O(n\log......
  • 矩阵乘法与矩阵快速幂
    矩阵乘法与矩阵快速幂1矩阵乘法1.1定义对于两个矩阵$A,B$,其中$A$大小为$n\timesm$,$B$大小为$m\timesp$,则这两个矩阵可以做乘法,得到的矩阵$C$的大小为$n\timesp$。例如:$$A=\begin{bmatrix}a_{11}&a_{12}&a_{13}\a_{21}&a_{22}&a_{23}\end{bmatrix}......
  • Hybird App开发,一种快速实现纯血鸿蒙App开发的理念
    2024年1月18日的开发者(HDC)大会上,就官宣了“纯血鸿蒙”操作系统即将于2024年3季度正式投产。与此同时,支付宝、京东、小红书、微博、高德地图、中国移动等在内的超百个头部应用都启动了鸿蒙原生应用开发,鸿蒙开发者日新增注册量已过万,同时众多985、211高校接连开设HarmonyOS相关课程......
  • Python函数每日一讲 - 简洁快速学会globals()函数
    引言在Python中,globals()函数是一个强大的工具,它允许您访问全局命名空间中的所有变量和函数。本文将深入探讨globals()函数的语法、用法以及实际应用场景,帮助大家更好地理解和使用这个函数。语句概览globals()函数的语法如下:globals()函数实例下面是globals()函数......
  • GitHub项目如何快速稳定涨星,让Star飞一会
    GitHub现在已经成了日常开发中必不可少的网站,日常工作和学习中要用到好多上面的开源项目,评价项目质量好坏的一个重要标准就是看Star和Fork的数量,如果看到个Star超过100以上的,基本上这个项目是靠谱的,如果超过1000过,那已经算是很流行了,至于一万以上的,基本上都是如雷贯耳的存在了。......
  • 像闪电般击碎天空吧——快速轻量化模型之 SDXL-Lightning
    SDXL-Lightning是一个由ByteDance(字节跳动)开发的文本到图像的生成模型,其主要贡献在于其高速的生成能力和轻量化的设计。模型的特点快速生成:SDXL-Lightning能够在几步之内生成高质量的1024px图像,这使得它在生成速度上具有优势。这种快速生成的能力使得SDXL-Lightning可以......
  • 如何在三维地球上快速拉白模以辅助建筑规划设计?
       通过以下方法可以在三维地球上快速拉白模以辅助建筑规划设计。 方法/步骤下载三维地图浏览器http://www.geosaas.com/download/map3dbrowser.exe,安装完成后桌面上出现”三维地图浏览器“图标。 2、双击桌面图标打开”三维地图浏览器“ 3、点击“要素标......
  • ES6技巧(快速解构赋值、数组去重、数组转对象)
    1.如何将a,b的值快速互换leta=1;letb=2;[a,b]=[b,a]解析:首先,我们有变量 a 被赋值为 1,变量 b 被赋值为 2。然后,[a,b]=[b,a] 这行代码实际上是将数组 [b,a] 解构赋值给了数组 [a,b]。在解构赋值过程中,右侧的数组 [b,a] 中的值会被依次赋给左侧......
  • 系统设计中的快速估算技巧
    拿到一堆数据,去做架构也好,设计也好,可行性分析也好,工程上需要的是严谨。但是也有很多场景,比如即时的问题争辩和讨论,我们往往需要的是快速、直接的估算,这样的数据显然不需要非常精确,甚至可以说它一定会非常粗略,我们的目标往往只停留在“量级”的级别,但是我们依然可以对方案有......