大数的模板题
https://ac.nowcoder.com/acm/contest/38105/D

#include<bits/stdc++.h> typedef unsigned long long LL; using namespace std; LL digit = 1e13; LL nums[200010]; int idx = 0; void Output(LL& num) { int cnt = 0; LL o = num; while (num) { cnt++; num /= 10; } for (int i = cnt; i < 13; i++) cout << 0; cout << o; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int n; cin >> n; cout << 1 << ' '; if (n == 1) { cout << 2.5 << endl; return 0; } nums[0] = 2; int p5 = 1; for (int i = 2; i <= n; i++) { for (int i = 0; i <= idx; i++) nums[i] *= 2; nums[0] += 1; if(i==n||i%10==0) for (int i = 0; i <=idx; i++) { if (nums[i] >= digit) { nums[i + 1] += nums[i]/digit; nums[i] %= digit; if (i == idx) idx++; } } } cout << nums[idx]; for (int i = idx-1; i >= 0; i--) Output(nums[i]); cout << ".5" << endl; return 0; }
注意:
输出时记得补0
此题,由于可以每次仅*2,可以每10次计算后再进位(不超过10^20,long long 范围内)。
也就是说,如果一个数字存储13位,但是一个数字的范围时20位,没必要超过13位就进位,可以等到全部接近20位,这样处理更快。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人