洛谷P1009 阶乘之和 题解
想看原题请点击这里:传送门
看一下原题:
题目描述
用高精度计算出S=!+!+!+…+n! (n≤) 其中“!”表示阶乘,例如:!=****1 5!=××××。 输入格式
一个正整数N。 输出格式
一个正整数S,表示计算结果。 输入输出样例
输入 输出
如果这道题不需要用高精度的话那就变得很简单了,但由于我们看到了洛谷贴上了“高精度”的标签但由于这道题目是求阶乘和所以越往后n的阶乘就会越大。
又因为n!=n*(n-1!,所以有转移方程n!=n*(n-1)!避免重复运算(ROS只是唠叨一句防止有些人不知道忘记这一方法)
高精度也很平常,但ROS这道题debug了好久就是因为‘+=’写成了‘=’
所以写代码一个地方错了就会出现各种玄学bug呀
代码如下:
#include<bits/stdc++.h>
#define N 1000000
using namespace std;
int n;
int tmp[N];
int lt;
int a[N];
int la;
int lm;
void cal(int);
int main(){
scanf("%d",&n);
tmp[]=;
lt=;
for(int i=;i<=n;i++){
cal(i);
lm=max(lt,la);
for(int j=;j<=lm;j++){
a[j]+=tmp[j];
}
for(int j=;j<=lm;j++){
a[j+]+=a[j]/;
a[j]%=;
}
la=lm;
while(a[la+]>){
la++;
a[la+]+=a[la]/;
a[la]%=;
}
}
for(int i=la;i>;i--){
if(a[i]==){
la--;
continue;
}
break;
}
for(int i=la;i>=;i--){
printf("%d",a[i]);
}
return ;
}
void cal(int x){
for(int i=;i<=lt;i++){
tmp[i]*=x;
}
for(int i=;i<=lt;i++){
if(tmp[i]>=){
tmp[i+]+=tmp[i]/;
tmp[i]%=;
}
}
while(tmp[lt+]>){
lt++;
tmp[lt+]+=tmp[lt]/;
tmp[lt]%=;
}
return ;
}
洛谷P1009 阶乘之和 题解的更多相关文章
- 洛谷——P1009 阶乘之和
P1009 阶乘之和 题目描述 用高精度计算出S=1!+2!+3!+…+n!(n≤50) 其中“!”表示阶乘,例如:5!=5*4*3*2*1. 输入输出格式 输入格式: 一个正整数N. 输出格式: 一 ...
- Java实现 洛谷 P1009 阶乘之和
import java.util.Scanner; public class 阶乘之和 { public static void main(String[] args) { Scanner sc = ...
- 洛谷 P1009 阶乘之和 Label:高精度
题目描述 用高精度计算出S=1!+2!+3!+…+n!(n≤50) 其中“!”表示阶乘,例如:5!=5*4*3*2*1. 输入输出格式 输入格式: 一个正整数N. 输出格式: 一个正整数S,表示计算结 ...
- 洛谷 P1009 阶乘之和
题目描述 用高精度计算出S=1!+2!+3!+…+n!(n≤50) 其中“!”表示阶乘,例如:5!=5*4*3*2*1. 输入输出格式 输入格式: 一个正整数N. 输出格式: 一个正整数S,表示计算结 ...
- 洛谷 P1134 阶乘问题 题解
题面 很裸的边取模边乘.注意因为进位的原因模数应该比较大: 另外,这道题是一道标准的分块打表例题(那样的话数据就可以更大了),可以用来练习分块打表: #include<bits/stdc++.h ...
- P1009 阶乘之和
P1009 阶乘之和 题目提供者洛谷OnlineJudge 标签数论(数学相关)高精1998NOIp提高组NOIp普及组 难度普及- 通过/提交1139/3791 提交该题 讨论 题解 记录 题目描述 ...
- 洛谷 P1220 关路灯 题解
Description 有 $n$ 盏路灯,每盏路灯有坐标(单位 $m$)和功率(单位 $J$).从第 $c$ 盏路灯开始,可以向左或向右关闭路灯.速度是 $1m/s$.求所有路灯的最少耗电.输入保证 ...
- 洛谷P2832 行路难 分析+题解代码【玄学最短路】
洛谷P2832 行路难 分析+题解代码[玄学最短路] 题目背景: 小X来到了山区,领略山林之乐.在他乐以忘忧之时,他突然发现,开学迫在眉睫 题目描述: 山区有n座山.山之间有m条羊肠小道,每条连接两座 ...
- 【洛谷P3960】列队题解
[洛谷P3960]列队题解 题目链接 题意: Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有 n×m ...
随机推荐
- python 字符串的一些函数
split()函数 split() 以 空格 为分割符分割字符串,返回列表 split('_') 以'_'为分割符分割字符串,返回列表 strip() 函数 去掉前后的空格 下面是字符 ...
- DataGridView绑定数据源后添加行
本文链接:https://blog.csdn.net/u012386475/article/details/88639799 在已经绑定数据源时,无法以Add的方式方式添加行,会报错 解决方法一: D ...
- 3.0 java学习网站
1.http://www.rupeng.com/Courses/Index/51 2.https://www.zhihu.com/question/25255189
- 清理rancher、k8s环境
清理rancher.k8s环境 待办 https://blog.csdn.net/CSDN_duomaomao/article/details/77684571
- Java查询数据库
创建数据库 创建 user 数据库 创建 teacher 数据库 teacher表的user_id列与user表的id列建立一对多连接,user_id作为外键. Java编程查询数据库 向user数据 ...
- NMAP输出结果中CPE的含义【转】
CPE全称是Common Platform Enumeration,意思是通用平台枚举项:它是NMAP对识别出来的软件.操作系统和硬件的一种命名方式:格式如下: cpe:/<part>:& ...
- 每日扫盲(五):RPC(Remote Procedure Call)
作者:洪春涛链接:https://www.zhihu.com/question/25536695/answer/221638079来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- python代码在linux终端中执行报错:Unable to init server: Could not connect: Connection refused
python代码在linux终端中执行时报错: Unable to init server: Could not connect: Connection refused Unable to init ...
- bootstrap创建带遮罩层的进度条
<div class="modal fade" id="loadingModal"> <div style="width: 200p ...
- 关于XShell&XFtp
今天在开发的时候要打包一个东东到测试服务器去,突然发现xftp用不了,然后各种下载破解.绿色版 结果都是一堆广告,原来这个xshell支持民用版,无需破解就能下载使用,这里小小的记录下 一. 前言 ...