首页 > 其他分享 >【模板】模意义下的乘法逆元 2

【模板】模意义下的乘法逆元 2

时间:2024-10-18 12:02:41浏览次数:7  
标签:int define while 逆元 读入 ans 乘法 模板 mod

原题链接
\(通过小学就知道的小费马定理我们可以得知\)
\(inv(a)=a^(mod-2)(mod p)\)
\(我们将其前后通分 然后把分子的和加起来 最后通过所有数的乘积的逆元进行计算即可\)
\(唯一恶心的点就是卡取消同步流\)

\(code:\)

点击查看代码
#include<bits/stdc++.h>

#define int long long
using namespace std;
#define pb push_back
#define pii pair<int,int>
#define all(x) x.begin(),x.end()
int mod=1e9+7;
int qpw(int a,int b){int ans=1;while(b){if(b&1)ans=ans*a%mod;a=a*a%mod,b>>=1;}return ans;}
int inv(int x){
    return qpw(x,mod-2);
}
inline void read(int &x) {//开实参,要使读入的值在里面发生变化
    x=0;                  //如果对实参不了解的可以改为int类型的,最后return也可以
    int f=1;//这个是用来判断正负的标志
    char s=getchar();//读入每一个空行、空格和数字
    while(s<'0'||s>'9') {//读入空格和换行阶段
        if(s=='-')//表明这个数是负数
            f=-1;
        s=getchar();//重复读入知道TA是数字
    }
    while(s>='0'&&s<='9') {//读入数字阶段
        x=x*10+s-48;//计算x的值,'0'的ASCII码值是48,剩下的自己想
        s=getchar();//重复读入直到TA读完
    }
    x*=f;//正数不改变符号(x*1),负数就改变(x*-1)
}//此之谓快读

void solve() {
    int n,k;read(n),read(mod),read(k);
    int sum=0;
    int pw=1;
    vector<int>a(n+1);
    vector<int>pre(n+1,1);
    vector<int>suf(n+2,1);
    int flw=1;
    for(int i=1;i<=n;i++){
        read(a[i]);
        pre[i]=pre[i-1]*a[i]%mod;
    }
    for(int i=n;i>=1;i--){
        suf[i]=suf[i+1]*a[i]%mod;
    }
    int fm=inv(pre[n]);
    for(int i=1;i<=n;i++){
        pw=pw*k%mod;
        sum=(sum+pw*pre[i-1]%mod*suf[i+1]%mod)%mod;
    }
    sum=sum*fm%mod;
    cout<<sum;
}
signed main() {
//    ios::sync_with_stdio(false);
//    cin.tie(nullptr);
//    cout.tie(nullptr);
    int _=1;
//    cin>>_;
    while(_--)solve();
}

标签:int,define,while,逆元,读入,ans,乘法,模板,mod
From: https://www.cnblogs.com/archer233/p/18473965

相关文章

  • Zabbix模板数据存储在哪里?
    Zabbix的模板数据存储在数据库的哪一个表里面?以MySQL数据库为例,在数据库zabbix中,其实模板数据存储在hosts这个表里面,而不是存在hosts_templates表里面。很多人一看到templates关键字,容易先入为主的以为这个表会存储模板的相关数据。但是实际上,hosts_templates表用于存储主机和模板......
  • 网站如何修改后台代码?模板网站怎么修改?
    修改网站后台代码通常涉及以下几个步骤,具体操作可能会因网站的技术栈和架构而有所不同。以下是一般流程:1.备份现有代码重要:在进行任何修改之前,务必备份现有的代码和数据库。这可以在出现问题时帮助你快速恢复。2.确定修改需求明确你需要对后台代码进行哪些具体的修改,比如......
  • 网站后台怎么修改模板?
    要修改网站后台的模板,通常需要遵循以下步骤。具体步骤可能会根据您使用的CMS(内容管理系统)或框架有所不同,但大体流程相似:登录后台管理界面:使用您的管理员账号登录到网站的后台管理界面。找到模板管理选项:在后台菜单中查找与“模板”、“主题”或“外观”相关的选项。这......
  • 模板网站可以修改内容吗?网站修改资料页面模板?
    模板网站通常提供了多种方式让用户自定义和修改内容,具体方法取决于所使用的模板平台或工具。以下是几种常见的修改方式:文本编辑:大多数模板网站允许用户直接在页面上编辑文本内容,如标题、段落等。图片更换:用户可以通过上传自己的图片来替换模板中的默认图片。颜色调整:一些高级......
  • 2024 CSP-J/S2 模板复习计划
    2024CSP-J/S2模板复习计划(Starton2024-10-18)说明原来这个计划是2023CSP-J/S2模板复习,现在被拿来当模板集。Day1我的记录@zhenghanyun的记录任务已完成SPFA(不带负环)已完成Floyd已完成Dijkstra已完成拓扑排序已完成单调栈已......
  • 模板网站如何修改代码?修改织梦网站页面模板?
    修改模板网站的代码通常涉及以下几个步骤:备份原始文件:在开始任何修改之前,确保备份原始文件。这可以帮助您在遇到问题时恢复到初始状态。了解文件结构:浏览模板文件夹,了解其结构。常见的文件夹包括 css、js、img 和 html 文件。查看 README 或其他文档,了解模板的......
  • 如何修改网站模板?想修改公司网站界面?
    修改网站模板通常涉及以下几个步骤,具体操作可能会根据你使用的建站平台或CMS(内容管理系统)有所不同:备份当前网站:在进行任何更改之前,确保备份你的网站,以防万一出现问题可以恢复。选择编辑器或平台:确定你是在使用WordPress、Joomla、Drupal等CMS,还是静态网站生成器如Hugo......
  • 【FastAPI】jinja2模板
    本文介绍简单的jinja2语法APIimportuvicornfromfastapiimportFastAPIfromfastapi.requestsimportRequestfromfastapi.templatingimportJinja2Templatesfromfastapi.staticfilesimportStaticFilesapp=FastAPI()#项目根目录下创建static与templates文件......
  • LangGraph 源码分析 | BaseTool 模板类
    文章目录BaseTool源码分析核心属性以`TavilySearchResults(BaseTool)`为例namedescriptionargs_schemaresponse_format查询选项属性需要子类实现的抽象方法以`TavilySearchResults(BaseTool)`为例核心方法`arun()`:`run()`的异步执行版本`invoke()`和`ainvoke()`......
  • 模板-整型哈希hval
    可以考虑将单个int类型映射成3个uint64,再执行加减操作,从而实现将多个int的集合最终映射成3个uint64,通过比较这3个uint64是否相等来快速判断集合是否相同。由于加法满足交换律,与顺序无法,因此上述做法天然支持多重集合。对于单重集合,可以考虑再加个set维护当前插入了哪些元素,已经有......