洛谷 P1998 阶乘之和 C++代码

news2025/1/21 18:47:06

前言

今天我们来做洛谷上的一道题目。

网址:[NOIP1998 普及组] 阶乘之和 - 洛谷

西江月·夜行黄沙道中 【宋】 辛弃疾

明月别枝惊鹊,清风半夜鸣蝉。稻花香里说丰年,听取WA声一片。

七八个星天外,两三点雨山前。旧时茅店社林边,路转溪桥忽见。

注:WA表示Wrong Answer

Bi------------------------------------

正文

这题一看过去这不So Easy吗?求一个数的阶乘还不简单?于是便有了以下代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	long long ans=1;
	cin>>n; 
	for(int i=n;i>=1;i--) ans*=i;
	cout<<ans<<endl;
	return 0;
}

于是便有了:

真的是:稻花香里说丰年,听取WA声一片。

请你仔细读一读题目,题目让求的是阶乘之和,不是阶乘!

读懂了题,那还是So Easy,于是便有了以下代码:

#include<bits/stdc++.h>
using namespace std;
long long f(int x)
{
	long long tmp=1;
	for(int j=x;j>=1;j--) tmp*=j;
	return tmp; 
}
int main()
{
	int n;
	long long ans=0;
	cin>>n; 
	for(int i=n;i>=1;i--) ans+=f(i);
	cout<<ans<<endl;
	return 0;
}

结果……:

真的是:稻花香里说丰年,听取WA声一片。

再请你仔细读一读题目,数据范围是n<=50,你不溢出谁溢出?

于是便有了高精度的代码:

#include<bits/stdc++.h>
using namespace std;
int cal=100,bignuma[110]{0,1},bignumb[110]{0,1};
long long f(int x)
{
	long long tmp=1;
	for(int j=x;j>=1;j--) tmp*=j;
	return tmp; 
}
void opea()
{
	for (int j=1;j<=100;j++)
	{
		if (bignuma[j]>9)
		{
			bignuma[j+1]+=bignuma[j]/10;
			bignuma[j]%=10;//取个位 
		}
	}
}
void opeb()
{
	for (int j=1;j<=100;j++)
	{
		bignumb[j]+=bignuma[j];
		if (bignumb[j]>9)
		{
			bignumb[j+1]+=bignumb[j]/10;
			bignumb[j]=bignumb[j]%10;
		}
	}
}
int main()
{
	int n;
	long long ans=0;
	cin>>n; 
	if(n<=15)
	{
		for(int i=n;i>=1;i--) ans+=f(i);
		cout<<ans<<endl;
	} 
	else 
	{
		for(int i=2;i<=n;i++)
		{
			for(int j=1;j<=100;j++)	bignuma[j]*=i;					
			opea(); opeb();
		}
		for (cal=100;bignuma[cal]==0&&cal>0;cal--);
		while (cal>0)
		{
			cout<<bignumb[cal];
			cal--;
		}
	}
	return 0;
}

结果:

终于是:稻花香里说丰年,听取AC声一片。

结尾

这一题纯纯是看你细不细心,如果不细心的话,就会像我一样,连着被坑两次。

文章不易,喜欢的话就点个赞再走吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1279905.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

压缩docker在主机的虚拟磁盘容量

我们在windows里使用docker时会发现&#xff0c;即使我们已经删除了无用的镜像和容器&#xff0c;主机里挂在docker虚拟磁盘的那个盘&#xff0c;可用空间也没有增加&#xff0c;这是因为虚拟磁盘不会自动缩小&#xff0c;这里我分享一个可用的解决方案。 1.先通过docker回收空…

【Leetcode题单】(01 数组篇)刷题关键点总结01【数组的遍历】

【Leetcode题单】&#xff08;01 数组篇&#xff09;刷题关键点总结01【数组的遍历】&#xff08;4题&#xff09; Easy数组的遍历485. 最大连续 1 的个数 Easy495. 提莫攻击 Easy414. 第三大的数 Easy628. 三个数的最大乘积 Easy 大家好&#xff0c;这里是新开的LeetCode刷题系…

[力扣题]1.判断一棵树是否是平衡二叉树

1.判断一棵树是否是平衡二叉树 1.1 题目描述 给你一棵二叉树的根节点 root &#xff0c;请你判断这棵树是否是一棵 完全二叉树 。 在一棵 完全二叉树 中&#xff0c;除了最后一层外&#xff0c;所有层都被完全填满&#xff0c;并且最后一层中的所有节点都尽可能靠左。最后一层…

【物联网无线通信技术】ZigBee从理论到实践(CC2530)

文章延续之前【物联网无线通信技术】系列文章的风格&#xff0c;首先对ZigBee这种在物联网发展初期出现的无线通信技术进行了相关背景概念的介绍&#xff0c;并横向介绍了几款时间跨度比较大的ZigBee芯片。然后以CC2530为例&#xff0c;从硬件到软件介绍了ZigBee这中无线通信技…

C++跨目录include问题

不同文件夹下使用预处理器指示符#include 使用举例 假设我们有如下一个工程&#xff0c;其中包含了几个源代码和头文件&#xff0c;其中main.cpp是主源代码文件&#xff0c;里面含有main函数&#xff1a; 在foldder main中包含&#xff1a;func4.hpp&#xff0c;func4.cpp&am…

C语言结构体详解(二)(能看懂文字就能明白系列)文章很长,慢慢品尝

系列文章目录 第一章 结构体的介绍和基本使用 &#x1f31f; 个人主页&#xff1a;古德猫宁- &#x1f308; 信念如阳光&#xff0c;照亮前行的每一步 文章目录 系列文章目录&#x1f308; *信念如阳光&#xff0c;照亮前行的每一步* 前言前面一篇文章主要介绍了结构体的基础…

Java 使用对应arthas 调试程序

1、作用 使用 arthas 可以进行如下操作 ① 抓取对应函数的耗时结构&#xff0c;然后分析对应的代码优化代码 ② 抓取对应函数的 入参、出参函数 ③ 重放对应的函数执行 ④ 查询对应程序占用结构&#xff0c;比如 cpu, jvm ⑤ 查询对应的 执行最频繁的 线程 ⑥ 打印函数…

震惊!我和GPT玩了一天游戏·····

最近开始研究如何基于GPT构建一个游戏引擎&#xff0c;于是先从简单的文字游戏开始探索。 从最简单的选择机制、故事机制&#xff0c;完善成一个包括天气、事件、技能、属性、伙伴、建造系统的-生化危机版文字游戏-。 我唯一的体验是&#xff1a;AI游戏&#xff0c;大有可为! …

C++11--右值引用

目录 基本概念 左值和右值 左值引用和右值引用 右值引用使用场景和意义 左值引用使用场景 左值引用的短板 右值引用和移动语义 右值引用引用左值 右值引用的其他使用场景 完美转发 万能引用 完美转发保持值得属性 完美转发使用得场景 基本概念 左值和右值 什么…

二叉树链式结构的实现和二叉树的遍历以及判断完全二叉树

二叉树的实现 定义结构体 我们首先定义一个结构来存放二叉树的节点 结构体里分别存放左子节点和右子节点以及节点存放的数据 typedef int BTDataType; typedef struct BinaryTreeNode {BTDataType data;struct BinaryTreeNode* left;struct BinaryTreeNode* right; }BTNode;…

solidity实现ERC20代币标准

文章目录 IERC20ERC20Remix 编译部署 IERC20 IERC20 是 ERC20 标准的接口规范&#xff0c;它定义和规范了一个标准 ERC20 代币合约应该实现的功能。这里让 ERC20 合约直接继承自 IERC20 接口。 // SPDX-License-Identifier: MIT pragma solidity ^0.8.4;interface IERC20 { // …

2023软件测试大赛总结

2023软件测试大赛总结 文章目录 2023软件测试大赛总结软件下载方式比赛方式个人总结断言使用java基础 预选赛省赛国赛 软件下载方式 进入官网下载插件&#xff08;直接下载一个完整的Eclipse就可以,这样比较方便&#xff09; 需要保证jdk版本和要求的一致&#xff0c;不然可能…

【Spring Boot 源码学习】ApplicationContextInitializer 详解

Spring Boot 源码学习系列 ApplicationContextInitializer 详解 引言往期内容主要内容1. 初识 ApplicationContextInitializer2. 加载 ApplicationContextInitializer3. ApplicationContextInitializer 的初始化 总结 引言 书接前文《初识 SpringApplication》&#xff0c;我们…

LeetCode(50)有效的括号【栈】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 有效的括号 1.题目 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合…

Linux基础项目开发1:量产工具——页面系统(六)

前言&#xff1a; 前面我们已经将显示系统、输入系统、文字系统、UI系统全部搭建好了&#xff0c;下面就到了开发板页面的布局&#xff0c;也就是实现按钮在开发板页面上的每个位置&#xff0c;下面让我们一起实现页面的搭建与布局设计吧。 目录 一、数据结构抽象 page_manager…

报考公务员简历(精选8篇)

想要成功进入公务员队伍&#xff0c;一份出色的个人简历是必不可少的。本文为大家精选了8篇报考公务员的个人简历案例&#xff0c;无论是应届毕业生还是有工作经验的求职者&#xff0c;都能从中汲取灵感&#xff0c;提升简历质量。找到心仪的公务员岗位。 报考公务员简历模板下…

java 工具类: CompareUtils(比较对象字段值变化)

一、前言 我们在工作中&#xff0c;可能会在日志中记录数据的变化情况或者在公共处理的数据增加一个日志页面&#xff0c;记录每次修改的变化。我们可以根据CompareUtils工具类比较数据前后发生了怎样的变化, 这样我们就可以知道数据做了哪些改变. 二、条件限制 在写这个通用…

Ontrack EasyRecovery2024数据恢复软件详细功能介绍

Ontrack EasyRecovery2024是一款功能强大的数据恢复软件&#xff0c;它可以帮助用户从各种存储设备中恢复丢失或删除的数据。它支持多种文件系统和文件类型&#xff0c;可以恢复包括照片、视频、音频、文档、电子邮件和归档文件等不同类型的数据。 EasyRecovery15Mac版本下载如…

轻易云AI:引领企业数智化转型提升企业AI效率

近期&#xff0c;轻易云AI与汤臣倍健的合作引起了业界的广泛关注。通过这一合作&#xff0c;轻易云AI不仅成功打造了集团小汤AI助手这一标志性的企业智能助手&#xff0c;更重要的是&#xff0c;这一合作凸显了轻易云AI作为专业AI应用集成专家的核心能力。轻易云AI已成功集成了…

柯桥西班牙语学校|实用西语吉祥话,场景都帮你想好了

1. ¡Feliz cumpleaos! Que este da est lleno de alegra, amor y bendiciones. (祝你生日快乐&#xff01;愿这一天充满欢乐、爱和祝福。) 2. ¡Hey [nombre del amigo/a]! Sabes qu da es hoy? ¡Es tu cumpleaos! Quera aprovechar para desearte un da lleno…