新用户注册入口 老用户登录入口

[转载]51Nod-1013 3的幂的和【快速模幂+逆元】

文章作者:转载 更新时间:2023-10-20 19:43:14 阅读数量:141
文章标签:3的幂的和等比数列求和快速模幂计算模运算逆元C++
本文摘要:该编程题要求计算3的幂次之和,并对1000000007取模,涉及关键词“3的幂的和”与“模运算”。解决方案将问题转化为等比数列求和,并采用C++实现快速模幂算法及逆元技巧。在限定输入范围(0 <= N <= 10^9)内,通过公式转换和高效算法设计,程序准确计算出3^0至3^N的和并对MOD值取模的结果。
转载文章

本篇文章为转载内容。原文链接:https://tigerisland.blog.csdn.net/article/details/72832637。

该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。

作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。

如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。

1013 3的幂的和

基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题
求:3^0 + 3^1 +...+ 3^(N) mod 1000000007
Input
输入一个数N(0 <= N <= 10^9)
Output
输出:计算结果
Input示例
3
Output示例
40


问题链接:1013 3的幂的和

问题分析:先将问题转换为等比数列求和,再用快速模幂计算,还需要用一下逆元

程序说明:(略)

题记:(略)

参考链接:(略)


AC的C++程序如下:

#include <iostream>using namespace std;const int MOD = 1000000007;
const int Q = 3;long long inv(long long a)
{return (a == 1) ? 1 : inv(MOD % a) * (MOD - MOD / a) % MOD;
}// 快速模幂计算函数
int powermod(long long a, int n, int m)
{long long res = 1;while(n) {if(n & 1) {        // n % 2 == 1res *= a;res %= m;}a *= a;a %= m;n >>= 1;}return res;
}int main()
{int n;// 等比数列和:Sn=a0*(q^(n+1) - 1)/(q - 1)=(q^(n+1) - 1)/(q - 1)// 使用快速模幂运算后,需要求一下逆元,再进行计算while(cin >> n)cout << (powermod(Q, n + 1, MOD) - 1) * inv((Q - 1)) % MOD << endl;return 0;
}






本篇文章为转载内容。原文链接:https://tigerisland.blog.csdn.net/article/details/72832637。

该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。

作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。

如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。

相关阅读
文章标题:[转载][洛谷P1082]同余方程

更新时间:2023-02-18
[转载][洛谷P1082]同余方程
文章标题:[转载]webpack优化之HappyPack实战

更新时间:2023-08-07
[转载]webpack优化之HappyPack实战
文章标题:[转载]oracle 同时更新多表,在Oracle数据库中同时更新两张表的简单方法

更新时间:2023-09-10
[转载]oracle 同时更新多表,在Oracle数据库中同时更新两张表的简单方法
文章标题:[转载][Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo

更新时间:2024-03-11
[转载][Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo
文章标题:[转载]程序员也分三六九等?等级差异,一个看不起一个!

更新时间:2024-05-10
[转载]程序员也分三六九等?等级差异,一个看不起一个!
文章标题:[转载]海贼王 动漫 全集目录 分章节 精彩打斗剧集

更新时间:2024-01-12
[转载]海贼王 动漫 全集目录 分章节 精彩打斗剧集
名词解释
作为当前文章的名词解释,仅对当前文章有效。
快速模幂计算快速模幂计算是一种用于高效求解大整数指数运算(a^n mod m)的算法。在本文章的上下文中,当需要计算3的幂次之和并对一个较大数(如1000000007)取模时,直接进行普通幂运算会非常耗时且可能超出计算机的数据存储范围。快速模幂算法利用分治思想,将指数n不断二分,并结合模运算的性质((a*b) mod m = ((a mod m) * (b mod m)) mod m),通过递归或循环实现指数运算的同时进行模运算,从而大大提高了计算速度和效率。
逆元在数论中,对于给定的一个整数a和一个素数m(或更一般地,任何一个具有单位元的环),如果存在另一个整数b满足a * b ≡ 1 (mod m),那么b就被称为a在模m下的逆元。在解决“3的幂的和”问题时,我们需要对等比数列求和公式的结果除以(Q-1),但直接做除法会遇到模运算下除法的限制。因此,我们采用逆元的概念,预先计算出(Q-1)的逆元inv((Q-1)),然后与原式相乘即可得到正确结果,同时保持在模m意义下的等价性。
等比数列求和等比数列是指一个数列,其中任意相邻两项之比恒等于同一个常数q(公比)。其前n项和(Sn)可以通过公式 Sn = a0 * (1 - q^n) / (1 - q) 或 Sn = a1 * (q^(n+1) - 1) / (q - 1) 进行计算,其中a0是首项,a1是第二项(若公比不为1)。在本文所讨论的问题中,将3的幂次之和视为首项为1、公比为3的等比数列,通过应用该求和公式并结合快速模幂计算和逆元的知识来高效求解最终结果。
延伸阅读
作为当前文章的延伸阅读,仅对当前文章有效。
在解决“3的幂的和”问题时,我们采用了快速模幂算法和逆元技巧,这是一种高效处理大整数运算的实用方法。事实上,在现代密码学、大数据计算及程序设计竞赛等领域,此类高效算法具有极高的应用价值。
近期,美国国家标准与技术研究院(NIST)正式宣布了下一代加密标准——抗量子计算的加密算法竞赛的最终胜出者,其中CRYSTALS-Kyber算法因其高效的密钥交换机制而受到广泛关注。该算法在实现过程中就利用了快速数论变换以及类似于上述问题中提及的模幂运算和求逆元等数学工具,确保在抵抗量子计算机攻击的同时,也能保持较高的运算效率。
此外,今年年初,谷歌的研究团队发表了一篇关于使用FPGA加速大整数模幂运算的研究论文,他们通过优化算法结构和硬件并行计算能力,极大地提升了此类复杂计算任务的执行速度,这进一步验证了我们在解决“3的幂的和”问题时采用策略的有效性和前瞻性。
深入理解这类算法不仅有助于提高编程能力,而且对于理解和跟进现代密码学的发展动态、应对未来可能面临的量子计算挑战等方面都具有重要意义。同时,类似的数学工具和技术也广泛应用于区块链技术的安全性保障、云计算环境中的数据加密与解密等诸多方面,值得我们持续关注和深入研究。
知识学习
实践的时候请根据实际情况谨慎操作。
随机学习一条linux命令:
env -i command - 在干净的环境变量状态下执行命令。
随便看看
拉到页底了吧,随便看看还有哪些文章你可能感兴趣。
基于Redis的分布式锁互斥性与可靠性实现及命名空间与原子性保障 04-22 可自定义刻度动画的jQuery进度条插件 02-07 jQuery和css3网站操作提示向导插件 12-28 jQuery创意响应式两栏滚动幻灯片特效 11-30 带视频播放的全屏轮播图布局特效 09-07 黑色炫酷个人摄影师网站通用模板下载 01-20 Cassandra中哈希分区与范围分区策略:数据分布、Murmur3Partitioner与负载均衡实践 11-17 [转载]java培训后好找工作吗 11-13 响应式环保包装盒设计公司网站静态模板 11-04 本次刷新还10个文章未展示,点击 更多查看。
中文建筑工程公司静态html网站模板下载 07-03 红色大气高端特色餐厅加盟网站模板 06-21 Vue.js 中的数据绑定与取消绑定:事件监听器、$destroy() 方法及 v-model 指令的运用与虚拟DOM、组件销毁的关系解析 06-20 响应式游戏应用商店单页网站html模板 06-15 自考大学通用模板下载 06-13 jqtimeline.js-简单又好用的jquery时间轴插件 06-04 [转载]Java Work 05-26 红色简洁电影售票平台网站html模板 05-02 投资集团项目展示页面网站HTML5模板 03-22 soulmate粉色干净浪漫唯美婚礼单页响应式网站模板 03-07 页面滚动时动态为元素添加class的jQuery插件 03-05
时光飞逝
"流光容易把人抛,红了樱桃,绿了芭蕉。"