栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

阶乘和(C++实现)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

阶乘和(C++实现)

[NOIP1998P2]阶乘和

【时间限制】:1000ms    【内存限制】:65535KB

题目描述

用高精度计算出S=1!+2!+3!+…+n!(n≤50) 其中“!”表示阶乘,例如:5!=5*4*3*2*1。 输入正整数N,输出计算结果S。

输入格式

输入正整数N

输出格式

输出计算结果S

样例输入
6
样例输出
873

本体虽然思路简单易想,但实际上代码实现对于初学者并不简单,在掌握高精度算法的同时要求对实际运算有较清晰的逻辑思维。(但毕竟小学生题,这么说才不是为了给自己做了半小时才ac找借口,哼╭(╯^╰)╮)

代码如下
#include 
using namespace std;
int a[1010],jc[1010];
int al,cl;
void mul(int x)//阶乘,jc=jc*x 
{
	cl=cl+2;
	for(int i=0;i1&&jc[cl-1]==0)//去除前导零 
	    cl--; 
}
void add()//相加 ,a=a+jc 
{
	al=max(al,cl);//求长度 
	for(int i=0;i1&&a[cl-1]==0)//去除前导零 
	    al--; 
} 
int main()
{ 
	cl=al=1;//赋值 
	jc[0]=1; 
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)//int版阶乘和形式,不改变原本基本运算逻辑,只将其改变为高精度算法 
	{
		mul(i);
		add(); 
	}
	for(int i=al-1;i>=0;i--)//输出a 
	{
		cout<

 


            来源 [NOIP1998P2]

                                        (被嘲讽小学生题都做不出来,卑微笨仔在线补题)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/444177.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号