当前位置: 首页 > news >正文

信奥赛C++提高组csp-s之快速幂(案例实践1)

信奥赛C++提高组csp-s之快速幂(案例实践1)

题目描述

监狱有n nn个房间,每个房间关押一个犯人,有m mm种宗教,每个犯人会信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱。

答案对100 , 003 100,003100,003取模。

输入格式

输入只有一行两个整数,分别代表宗教数m mm和房间数n nn

输出格式

输出一行一个整数代表答案。

输入输出样例 #1
输入 1
2 3
输出 1
6
说明/提示
样例输入输出 1 解释
状态编号1 号房间2 号房间3 号房间
1信仰 1信仰 1信仰 1
2信仰 1信仰 1信仰 2
3信仰 1信仰 2信仰 2
4信仰 2信仰 1信仰 1
5信仰 2信仰 2信仰 2
6信仰 2信仰 2信仰 1
数据规模与约定

对于100 % 100\%100%的数据,保证1 ≤ m ≤ 10 8 1 \le m \le 10^81m1081 ≤ n ≤ 10 12 1 \le n \le 10^{12}1n1012

思路分析

我们采用总方案数减去不越狱的方案数:
总方案数为m n m^nmn,不越狱的方案数为m × ( m − 1 ) n − 1 m \times (m-1)^{n-1}m×(m1)n1(第一个房间有 m 种选择,之后每个房间都不能与前一个相同,故有 m-1 种选择)。
答案即为m n − m × ( m − 1 ) n − 1 m^n - m \times (m-1)^{n-1}mnm×(m1)n1,对 100003 取模,注意处理负数。

由于 n 可达10 12 10^{12}1012,必须用快速幂计算幂次取模。
mm-1在计算前先对模数取模,避免溢出。

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintMOD=100003;// 快速幂:求 a^b % modllqpow(ll a,ll b,ll mod){ll res=1;a%=mod;while(b){if(b&1)res=res*a%mod;a=a*a%mod;b>>=1;}returnres;}intmain(){ll m,n;cin>>m>>n;// 总方案数 = m^n % MODll total=qpow(m,n,MOD);// 不越狱方案数 = m * (m-1)^(n-1) % MODll noCrime=m%MOD*qpow(m-1,n-1,MOD)%MOD;// 越狱方案数 = total - noCrime,取正模ll ans=(total-noCrime+MOD)%MOD;cout<<ans<<endl;return0;}

功能分析

  1. 快速幂取模qpow函数采用二进制分解指数的方法,时间复杂度O ( log ⁡ n ) O(\log n)O(logn),能安全处理 n高达10 12 10^{12}1012的情况。
  2. 防止溢出:计算前对底数取模,乘法后立即取模。
  3. 负数处理(total - noCrime + MOD) % MOD确保结果为非负。
  4. 简洁变量:使用m, n对应宗教数和房间数,符合题目要求。

更多系列知识,请查看专栏:《信奥赛C++提高组csp-s知识详解及案例实践》:
https://blog.csdn.net/weixin_66461496/category_13113932.html


各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}

1、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html

2、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新)
https://blog.csdn.net/weixin_66461496/category_13125089.html

3、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转


GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html

4、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}
http://www.jsqmd.com/news/453565/

相关文章:

  • SmolVLA实战教程:Python调用app.py接口实现批量动作推理自动化
  • P1017 [NOIP 2000 提高组] 进制转换
  • css学习笔记
  • 【宠物领养系统】~Python+Vue3+管理系统网站+2026原创
  • GIMP中文版下载安装指南:不花钱的专业修图软件(2026最新版)
  • 物联网技术综合实训教程【2.0】
  • Ostrakon-VL-8B赋能Web应用:打造智能图片内容审核前端
  • 养龙虾-------【多openclaw 对接飞书多应用】---多个大龙虾机器人群聊
  • 探讨2026年有特色的家电展会,大型家电展会好用的有哪些 - 工业推荐榜
  • 率零和嘎嘎降AI哪个好?穷学生实测对比告诉你
  • 2026私域风口下微信小程序商城开发服务商推荐深度解析
  • ASP 总结
  • C/C++ 二维平面求点到直线的距离
  • 2026宁波高端红茶批发指南:口碑厂家,养生必备,有机认证高端红茶/生态红茶/特色高端精品红茶,高端红茶加工厂选哪家 - 品牌推荐师
  • 生产环境日志分析:用NLP-StructBERT聚类相似错误日志
  • StructBERT零样本分类-中文-base实际作品集:电商评论‘好评/中评/差评/物流问题’四分类效果
  • 2026年Kimi写的论文AI率太高?这几款降AIGC率工具实测有效
  • 封神博弈入门✅蒋文华《博弈论基础及其应用》,浙大出版社出品,解锁人生决策密码
  • 2026年常州干燥机设备正规厂商排名,十大厂家有哪些 - mypinpai
  • 手把手教你用 cephadm 在 Ubuntu 22.04 上部署生产级 Ceph 集群(Quincy/Reef 版本通用)
  • Qwen3-0.6B-FP8应用开发:Python源码分析工具
  • 天津普通装修哪家公司口碑好?2026最新FAQ解答 - 速递信息
  • C 语言测验
  • AI智能体在设备预测性维护的场景应用|从被动抢修到主动预测,构建智能工厂新范式
  • 2026年太原清水混凝土装饰公司口碑排名,有实力的品牌企业汇总 - 工业品牌热点
  • 提升开发效率:coze-loop AI代码优化器从入门到精通实战
  • 多无人机动态避障路径优化:基于阿尔法进化(Alpha Evolution,AE)算法的多个无人机动态避障路径规划(MATLAB代码
  • 2026年盘点贵阳老牌的新能源汽修培训,口碑好的是哪家 - 工业品网
  • Allegro PCB整体旋转
  • call间接调用