NOIP2003 普及组 洛谷P1045 麦森数 (快速幂+高精度)
有两个问题:求位数和求后500位的数。
求位数:最后减去1对答案的位数是不影响的,就是求2p的位数,直接有公式log10(2)*p+1;
求后500位的数:容易想到快速幂和高精度;
1 #include<bits/stdc++.h>
2 using namespace std;
3 int p,f[1001],/*基数*/res[1001],/*记录答案*/sav[1001]/*中间数组*/;
4
5 void work_1(){//记录答案
6 memset(sav,0,sizeof(sav));//中间数组每次用时初始化为0
7 for(int i=1;i<=500;i++)//最后500位
8 for(int j=1;j<=500;j++)//两层循环:高精乘法的精髓
9 sav[i+j-1]+=res[i]*f[j];//先计算每一位上的值(不进位)
10 for(int i=1;i<=500;i++){//处理进位
11 sav[i+1]+=sav[i]/10;
12 sav[i]%=10;
13 }
14 memcpy(res,sav,sizeof(res));//把sav的值赋给res
15 }
16
17 void work_2(){//基数相乘
18 memset(sav,0,sizeof(sav));
19 for(int i=1;i<=500;i++)
20 for(int j=1;j<=500;j++)
21 sav[i+j-1]+=f[i]*f[j];
22 for(int i=1;i<=500;i++){
23 sav[i+1]+=sav[i]/10;
24 sav[i]%=10;
25 }
26 memcpy(f,sav,sizeof(f));
27 }
28
29 int main(){
30 scanf("%d",&p);
31 printf("%d\n",(int)(log10(2)*p+1));//求位数
32 res[1]=1;f[1]=2;//高精度赋初值
33 while(p){//快速幂模板
34 if(p&1) work_1();
35 work_2();//基数相乘
36 p>>=1;
37 }
38 res[1]-=1;//最后要减1
39 for(int i=500;i>=1;i--){
40 if(i!=500 && i%50==0) cout<<endl<<res[i];//每50个数要换行
41 else cout<<res[i];
42 }
43 return 0;
44 }
NOIP2003 普及组 洛谷P1045 麦森数 (快速幂+高精度)的更多相关文章
- 洛谷 P1045 麦森数
题目描述 形如2^{P}-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2^{P}-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=30213 ...
- 洛谷P1045 麦森数
题目描述 形如2^{P}-12 P −1的素数称为麦森数,这时PP一定也是个素数.但反过来不一定,即如果PP是个素数,2^{P}-12 P −1不一定也是素数.到1998年底,人们已找 ...
- 洛谷 P1045 麦森数 (快速幂+高精度+算位数骚操作)
这道题太精彩了! 我一开始想直接一波暴力算,然后叫上去只有50分,50分超时 然后我改成万位制提高运算效率,还是只有50分 然后我丧心病狂开long long用10的10次方作为一位,也就是100亿进 ...
- P1045麦森数
P1045麦森数 #include<iostream> #include <cmath> #include <cstring> const int maxn = 1 ...
- 洛谷 P1226 【模板】快速幂||取余运算
题目链接 https://www.luogu.org/problemnew/show/P1226 题目描述 输入b,p,k的值,求b^p mod k的值.其中b,p,k*k为长整型数. 输入输出格式 ...
- 洛谷试炼场-简单数学问题-P1045 麦森数-高精度快速幂
洛谷试炼场-简单数学问题 B--P1045 麦森数 Description 形如2^P−1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果PP是个素数,2^P-1 不一定也是素数.到19 ...
- 【题解】[P1045] 麦森数
题目 题目描述 形如2^P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2^P-1 不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=30213 ...
- 洛谷P1313 计算系数【快速幂+dp】
P1313 计算系数 题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入输出格式 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别 ...
- NOIP2015 普及组 洛谷P2671 求和 (数学)
一道数学题...... 采用分组的思想,我们要统计答案的数对满足两个条件:同奇偶,同颜色.所以可以按这两个要求分组. 然后就是分组处理了,对于每组(有k个数),这里面的任意两对数都是满足条件的,可推出 ...
随机推荐
- MAUI Blazor 权限经验分享 (定位,使用相机)
入门文章 Blazor Hybrid / MAUI 简介和实战 https://www.cnblogs.com/densen2014/p/16240966.html 在 Mac 上开发 .NET MA ...
- Python 车主之家全系车型(包含历史停售车型)配置参数爬虫
本文仅供学习交流使用,如侵立删!demo下载见文末 车主之家全系车型(包含历史停售车型)配置参数爬虫 先上效果图 环境: win10 ,Contos7.4 python3.9.4 pycharm202 ...
- Java面试题(五)--Rabbits
1.什么是MyBatis? 1.Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动.创建连接.创建statement等 ...
- MySQL金融应用场景下跨数据中心的MGR架构方案(1)
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 0. 内容提纲 运行环境 部署MGR A&B 部署MGR A.B之间的复制通道 几个注意事项 如何在多个数据中心部 ...
- redis安装与连接
安装(centos7): yum install redis 启动与停止: systemctl start redis. service systemctl stop redis.service 修改 ...
- Pulsar Summit Asia 2020 中文专场议题出炉!
关于 Apache Pulsar Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息.存储.轻量化函数式计算为一体,采用计算与存储分离架构设计,支 ...
- 深入分析FragmentPagerAdapter和FragmentStatePagerAdapter
最近遇到比较奇怪的bug,TableLayout+ViewPager实现点击顶部tab切换viewpager视图.但是在Viewpager设置dapter时,最开始设置的是FragmentPagerA ...
- 微服务性能分析|Pyroscope 在 Rainbond 上的实践分享
随着微服务体系在生产环境落地,也会伴随着一些问题出现,比如流量过大造成某个微服务应用程序的性能瓶颈.CPU利用率高.或内存泄漏等问题.要找到问题的根本原因,我们通常都会通过日志.进程再结合代码去判断根 ...
- mybatis 15: 缓存
作用 当对某些数据的查询请求频繁,且数据不经常修改时,使用缓存机制可以提高查询效率 注意 mybatis专注于sql查询,数据映射 缓存问题应该交给专门负责缓存的其他第三方框架 mybatis缓存执行 ...
- 理解 Flutter 的基础概念:Widget
Widget 的本意是组件的意思,熟悉 Web 应用开发的人在后期必定会接触到 Vue.React 等框架,这些框架都有一个核心的概念 -- 组件.组件的目的也很简单,那就是重复率用一段代码,并且能够 ...