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

P1009 阶乘之和

点击查看代码
#include<bits/stdc++.h>using namespace std;vector<int> A,s;
int n;//高精度加法的模板
vector<int> add(vector<int> A,vector<int> B)
{if(A.size()<B.size()) return add(B,A);vector<int> C;int t=0;//补位for(int i=0;i<A.size()||t;++i){t+=A[i];if(i<B.size()) t+=B[i];//缓存位C.push_back(t%10);//当前位t=t/10;//进位}return C;}//高精度乘法的模板
vector<int> mul(vector<int> A,int b)
{vector<int> C;int t=0;for(int i=0;i<A.size()||t;++i){if(i<A.size()) t+=A[i]*b;//缓存位C.push_back(t%10);//现位t/=10;//进位}while(C.size()>1&&C.back()==0) C.pop_back();return C;
}int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n;string str="1";//初始化高精度数组,使得可以存储高精度,为后面做铺垫for(int i=str.size()-1;i>=0;--i) A.push_back(str[i]-'0');for(int i=1;i<=n;i++){A=mul(A,i);s=add(s,A);}for(int i=s.size()-1;i>=0;--i) cout<<s[i];
}
是一道高精度的题目,阶乘的数值以外的大,如果是12的阶乘就超过int的范围,如果是20就超过long long的范围 因此需要高精度来处理,本题让我对模板有了更深的理解,补位,缓存位,当前位,进位,最后去前导0,都是这套逻辑 模板自不必说,如果不是简单的模板题也要学会手动用字符串设置一个高精度数
http://www.jsqmd.com/news/47128/

相关文章:

  • “考古”早期自然语言对话程序——ELIZA
  • 洛谷 B4416:[GESP202509 四级] 最长连续段 ← sort+unique
  • Windows Server 2022 安装 SqlServer2000
  • RCTF pwn方向题解(缺bbox)
  • 第32天(简单题中等题 数据结构)
  • 2025年11月GEO公司谁专业?硬核测评TOP10终极对比
  • 2025年11月GEO公司终极对比:如何选?10家服务商全景解析
  • 2025年11月GEO公司谁专业?权威发布推荐对比
  • 2025年11月GEO公司全景报告:哪家强?十大服务商权威揭晓
  • 2025年11月GEO公司选择报告:哪个服务商实战案例更突出?
  • 【CI130x 离在线】Linux平台从命名管道接收PCM格式数据并转为WAV文件——Python脚本实现
  • 2025年11月GEO公司深度盘点:哪家强?TOP10热度榜权威揭晓
  • 2025年11月GEO服务商怎么选?终极对比TOP10推荐指南
  • CF1863D-Two-Colored Dominoes
  • 2025年11月GEO公司深度盘点:怎么选?十大服务商权威发布
  • 2025年11月GEO服务商怎么选?深度盘点TOP10专业解析
  • docker-- 遇到服务无法访问,排查记录
  • 4. 2025年11月GEO服务商深度盘点:十大专业机构对比分析与选择策略
  • 2025年11月GEO服务商选择指南:哪家好权威推荐
  • 2025年11月GEO服务商怎么选?终极对比TOP10评测报告
  • 苹果手机传文件到 windows 电脑
  • 飞书弹窗报错 Failed to load DLL from D:\installed_app\Feishu\app\frame.dll, System Error Code = 5
  • 11/21
  • Vision Transformer (ViT) 原理及解读
  • 2025.11.21
  • 关于Git的多分支使用
  • 高中数学核心素养记忆口诀,从简到难,方便您记忆和理解
  • 杂题选做 25.11
  • 【第8章 数据分析基础】让AI帮你可视化一个数据集
  • sam3 (2)开发 - MKT