洛谷oj P1045麦森数 高精度快速幂取模及位数求法
题目链接:戳我戳我
我们知道, 的最后一位必定不是0, 则 的位数与 相等。
那么如何来求 的位数呢?
为了不失一般性, 在此直接讨论任意数 的位数:
对于任意大于等于0的实数k, 有 的位数为 + 1(即k的向下取整再+1)
而
所以位数就是 啦
log10是cmath里的函数直接用就行
代码:
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int a[2600]; //其实开两倍就够了
int r[2600]; //这个是乘法的结果数组void mul(int *a, int *b) //高精度乘法
{memset(r, 0, sizeof(r));for(int i = 0; i < 500; ++i){int before = 0;for(int j = 0; j < 500; ++j){r[i + j] += a[i] * b[j] + before;before = r[i + j] / 10;r[i + j] %= 10;}if(before)r[i + 500] += before;}
}void qp(int p) //高精度快速幂对500取模
{int b[2600];memset(b, 0, sizeof(b));b[0] = 2;while(p){if(p & 1){mul(a, b);for(int i = 0; i < 500; ++i)a[i] = r[i];}mul(b, b);for(int i = 0; i < 500; ++i)b[i] = r[i];p >>= 1;}
}int main()
{int p;cin>>p;int nima = (int)(p*log10(2)+1); //求位数nima(不要在意我帅气的变量名)cout<<nima<<endl;memset(a, 0, sizeof(a));a[0] = 1;qp(p);a[0]--; //-1直接减就行喽int sum = 0;for(int i = 499; i>=0; --i){sum++;cout<<a[i];if(sum % 50 == 0)cout<<endl;}return 0;
}
洛谷oj P1045麦森数 高精度快速幂取模及位数求法相关推荐
- [NOIP2003普及组]麦森数(快速幂+高精度)
[NOIP2003普及组]麦森数(快速幂+高精度) Description 形如2^P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2^P-1不一定也是素数.到1998 ...
- (快速幂算法+高精度)洛谷P1045 麦森数
前言 故事的最后,让我们以一道十分经典的题目--<麦森数>来结尾.接受现实吧,总会有我们没准备过的高精度运算出现.我们固然可以提前把高精度的快速幂模板也准备好,但是总会有百密一疏的时候 ...
- P1045 麦森数 洛古
1.位数运算 2.高精度 3.快速幂 完事
- [洛谷 OJ]P1015 回文数
题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个十进制数56,将56加65(即把5656从右向左读),得到121是一个回文数. 又如:对于十进制数 ...
- 麦森数(洛谷P1045题题解,Java语言描述)
题目要求 题目链接 分析 这题挺经典的,快速幂取模算法,如果求出大数再取模就可能T掉. 之前有篇文章写了这个算法:<快速幂算法详解&&快速幂取模算法详解> 既然是Java, ...
- 快速幂||取余运算【模板】(洛谷P1226题题解,Java语言描述)
题目要求 P1226题目链接 分析 标准的快速幂取模算法板子,之前这个算法我在这篇文章中讲过了:<快速幂算法详解&&快速幂取模算法详解>. 这里选择使用比较简单的API实现 ...
- 高精度:麦森数*(洛谷P1045)
P1045 [NOIP2003 普及组] 麦森数 解析 看似只是正常的一个高精 然而 暗藏杀机 一开始随手那么一写 ... (即使用了快速幂)时间复杂度过于感人 后来我们发现: 第一问位数的计算不必真 ...
- 信息学奥赛一本通 1925:【03NOIP普及组】麦森数 | OpenJudge NOI 4.4 1708:麦森数 | 洛谷 P1045 [NOIP2003 普及组] 麦森数
[题目链接] ybt 1925:[03NOIP普及组]麦森数 OpenJudge NOI 4.4 1708:麦森数 洛谷 P1045 [NOIP2003 普及组] 麦森数 [题目考点] 1. 高精度 ...
- 麦森数(洛谷-P1045)
题目描述 形如 2^{P}-1 的素数称为麦森数,这时 P 一定也是个素数.但反过来不一定,即如果 P 是个素数, 2^{P}-1 不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个 ...
最新文章
- Activity中KeyEvent的传递
- 4.Windows下安装ZooKeeper
- 【总结整理】关于IE6的兼容性
- spring集成kafka
- 2021年东港二中高考成绩查询,辽宁省东港二中2021届英语高考模拟试卷1(新课改原创2020版,供2021年课改省份考生使用)...
- 促进新一代人工智能产业发展三年行动计划_工信部新一代人工智能产业创新重点揭榜任务——中国联通智能化网络基础设施及开放平台启动会成功召开...
- 谷歌 Pixel 4 人像模式拍照算法揭秘
- (58)Verilog HDL事件或:or、,
- javascript实现下拉条联动_JavaScript gt;gt;gt; 003
- ES6——Map和WeakMap
- docker web程序本地化_Docker 容器化部署 Python 应用
- android开发学习——关于activity 和 fragment在toolbar上设置menu菜单
- 使用SerialPort 对象实现串口拨号器通信[下]
- python下载安装教程-一招解决:各种版本的Python下载安装教程
- python异常处理_Python爬虫入门(5):URLError异常处理
- 产品 观察体会微信界面心得(一)
- 强化学习(实践):多臂老虎机,动态规划,时序差分
- excel表格怎么换行?3个方法,你一定不知道第3个
- TestNG教程二:testNG常用测试类型
- ThinkPHP教程
热门文章
- Java课程学习十一:图片匹配游戏
- 多用户商城系统建站需要考虑的几个因素
- modelsim Error: (vlog-13067) Syntax error, unexpected non-printable character.
- VueJS实现模糊查询
- fcpx插件Volumetrix Mac关键帧快速渲染转场
- [深入研究4G/5G/6G专题-32]: URLLC-3-《中国移动面向 URLLC 场景的无线网络能力》解读-1-行业应用场景与技术指标要求
- [转帖].MegaRAID SAS 9361-8i 开箱 极简测试
- 计算机组装与维修作者闫从丰,计算机组装与维修英文参考文献 计算机组装与维修论文参考文献数量是多少...
- ex20 函数和文件
- 走进波分 -- 07.波分系统基本构成之光放