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

#题解#洛谷P1045 麦森数#快速幂#高精度乘法#

P1045 [NOIP 2003 普及组] 麦森数 - 洛谷

分析

  1. 2p-1的位数,易知:跟2p的位数相同,为[log10(2)*p]+1

  2. 求末尾500位数字:高精度乘法+快速幂

代码

#include<bits/stdc++.h>
#define int  long long
#define endl '\n'
using namespace std;
const int N = 1500;int ans[N], a[N];
int l = 1;
int len = 1;
int c[N];
void pw(int b)
{ans[1] = 1;a[1] = 2;for (; b; b >>= 1){if (b & 1){memset(c, 0, sizeof c);for (int i = 1; i <= len; i++)for (int j = 1; j <= l; j++)c[i + j - 1] += ans[i] * a[j];len = min(len + l - 1,500ll);for (int i = 1; i <= len ; i++)c[i + 1] += c[i] / 10, c[i] %= 10;while (c[len + 1] and len < 500){len = min(500ll, len + 1);c[len + 1] += c[len] / 10;c[len] %= 10;}for (int i = 1; i <= len; i++)ans[i] = c[i];}memset(c, 0, sizeof c);for (int i = 1; i <= l; i++)for (int j = 1; j <= l; j++)c[i + j - 1] += a[j] * a[i];l = min(2 * l - 1,500ll);for (int i = 1; i <= l; i++)c[i + 1] += c[i] / 10, c[i] %= 10;while (c[l + 1] and l < 500){l = min(500ll, l + 1);c[l + 1] += c[l] / 10;c[l] %= 10;}for (int i = 1; i <= l; i++)a[i] = c[i];}
}
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int p;cin >> p;pw(p);int xx = p * log10(2) +1;cout << xx  << endl;for (int i = 500; i >= 1; i--){if (i == 1)cout << ans[i] - 1;elsecout << ans[i];if ((500 - i + 1) % 50 == 0)cout << endl;}return 0;
}

错误/Trick总结

  1. N开太大memset导致TLE

  2. 只需对500位以内进行高精度乘法

http://www.gsyq.cn/news/79784.html

相关文章:

  • 一类通过寻找区间关键点从而弱化子区间的限制而优化复杂度的问题
  • C++之函数(六) - Invinc
  • 2025 雅思报班不踩雷!高口碑机构红榜 + 3 类考生适配指南
  • 雅思培训机构怎么选?2025年这5家高性价比机构值得关注
  • 2025年口碑好的双胞胎婴儿车国货
  • vue-dawn-flow 低代码流程插件
  • 百日挑战——单词篇(第二十天) - 指南
  • 洛谷U639786 树的颜色询问 题解 树上启发式合并(dsu on tree)
  • Webpack与Vite的常用设置及主要差异分析
  • 2025 年雅思培训口碑机构 TOP5 推荐
  • 2025年质量好的平版胶印油墨/胶印油墨厂家最新热销排行
  • 【亲测】AI学术搜索哪家强?试了4款国产顶流,结果完全出乎意料!
  • 102302116_田自豪_作业4
  • 随机名字生成器
  • 跨境电商英语学习app推荐
  • 跨境电商人的英语逆袭神器,你 get 了吗?
  • 251209一天的任务量还是挺多的
  • Gradio界面进行渐变美学设计的提示词 - yi
  • 芯片腾飞
  • 第四次博客作业
  • 2025视觉检测设备权威测评榜单正式发布
  • 【C语言】结构体
  • 什么是 Spring AOP - Higurashi
  • 2025最新油田助剂厂家推荐榜:实力企业赋能油气开发,全国优质供应商精选
  • Linux 中文本显示字体以颜色突出
  • 《Zephyr RTOS 深度学习指南与生成式AI结合方法探讨》第六章 - 详解
  • 自定义拦截器不生效问题记录
  • 退役选手玩儿原神 (1)
  • 电池的荷电状态(SOC)估计
  • nginx保姆及教学