OJ系统刷题 第十篇

news2025/1/19 12:54:12

13444 - 求出e的值

时间限制 : 1 秒

内存限制 : 128 MB

利用公式e=1+1/!1​+1/2!​+1/3!​+...+1/n!​,求e的值,要求保留小数点后10位。

输入

输入只有一行,该行包含一个整数n(2≤n≤15),表示计算e时累加到1/n!​。

输出

输出只有一行,该行包含计算出来的e的值,要求打印小数点后10位。

样例

输入

10

输出

2.7182818011

答案:

#include<iostream>
using namespace std;
int main() {
	int n = 0;
	long long mul = 1;
	cin >> n;
	double e = 1;
	for (int i = 1; i <= n; i++) {
		mul *= i;
		e += 1.0/mul;
	}
	cout.precision(10);
	cout.flags(cout.fixed);
	cout << e << endl;
	return 0;
}

分析:这道题刚开始我是编写的时候,那个mul定义为int。但是int最大范围是21亿,但是13的阶乘就已经到了62亿多。所以int的范围是接受不了的。而long一般也是4字节,一般范围和int一样。所以一般   long  long 来定义。

是否通过:

13462 - 跳一跳(建议二刷)

时间限制 : 1 秒

内存限制 : 128 MB

近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱。 简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束。 如果跳到了方块上,但没有跳到方块的中心则获得 1 分;跳到方块中心时,若上一次的得分为 1 分或这是本局游戏的第一次跳跃则此次得分为 2 分,否则此次得分比上一次得分多两分(即连续跳到方块中心时,总得分将 +2,+4,+6,+8…)。 现在给出一个人跳一跳的全过程,请你求出他本局游戏的得分(按照题目描述的规则)。

输入

输入包含多个数字,用空格分隔,每个数字都是 1,2,0 之一,1 表示此次跳跃跳到了方块上但是没有跳到中心,2 表示此次跳跃跳到了方块上并且跳到了方块中心,0 表示此次跳跃没有跳到方块上(此时游戏结束)。

对于所有评测用例,输入的数字不超过 30 个,保证 0 正好出现一次且为最后一个数字。

输出

输出一个整数,为本局游戏的得分(在本题的规则下)。

样例

输入

1 1 2 2 2 1 1 2 2 0 

输出

22

答案:

#include<iostream>
using namespace std;
int main() {
	//isFirst用来判定是否是第一次跳到正中心
    //flag用来判断是否连续跳到正中心
	int n,isFirst=1,flag=0;
	int last = 0,sum=0;//last为上次跳的距离
	while (true){
		cin >> n;
		if (n == 1) {
			isFirst = 0;
			last = 1;
			sum += last;
			flag = 0;
		}
		else if (n == 2) {
			if (isFirst == 1) {//第一次跳到正中心
				isFirst = 0;//若第一次跳到正中心,将isFirst设置为0,即这一局不会再发生第二个第一次跳到正中心
				last = 2;
				sum += last;
				flag = 1;
			}
			else if (flag == 1) {
				last += 2;
				sum += last;
			}
			else if (flag == 0) {//连续跳到正中心中断,即累计积分又得从2开始
				last = 2;
				sum += last;
				flag = 1;//虽然中断,但是从这一步起,将连续标志设为1
			}
		}
		else {
			break;
		}
	}
	cout << sum << endl;
	return 0;
}

分析:这道题逻辑看似简单,但实现还是有困难的。要判定第一次是否跳到正中心,而且还要判断是否连续跳到正中心。

21201 - 成绩排序

时间限制 : 1 秒

内存限制 : 128 MB

输入10个学生的成绩,并将10个学生的成绩按由大到小的顺序排序。

输入

10整数表示10个学生的成绩(整数与整数间使用空格隔开)

输出

10个按由大到小排好序的成绩

样例

输入

20 30 40 50 60 70 80 90 91 95

输出

95 91 90 80 70 60 50 40 30 20

答案:

#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a, int b) {
	return a > b;
}
int main() {
	int a[10];
	for (int i = 0; i < 10; i++) {
		cin >> a[i];
	}
	sort(a, a + 10,cmp);
	for (int i = 0; i < 10; i++) {
		cout << a[i] << ' ';
	}
	return 0;
}

分析:其实要单说排序不难,这道题放在这里就是掌握C++的快速排序库函数sort(形参a,形参b )

sort( )函数可以有两个参数,也可以有三个参数,当为两个参数时,默认是升序排序。有三个参数时,要根据第三个参数才能决定是升序还是降序。本题cmp()函数返回的是a>b,这是降序。如果是a<b,这是升序。形参a和形参b是待排序数据的地址范围。

另外在这里给出C语言的快速排序,就当复习一下:

21203 - 整数重组

时间限制 : 1 秒

内存限制 : 128 MB

任意给定一个整数,把它重新组成一个最大数和一个最小数,求出两数的差。

例如:3721,可以重组成:7321和1237,两数之差为7321-1237=6084

输入

x(整数 1 <= x <= 10,000,000)

输出

最大数和最小数的差

样例

输入

102

输出

198

答案:

#include<iostream>
using namespace std;
int main() {
	int n, max=0, min=0;//max为重组的最大值,min为重组的最小值
	int a[9] = { 0 };//用来记录这个数各个位数有多少个,用来计算最大值
	int b[9] = { 0 };//用来记录这个数各个位数有多少个,用来计算最小值
	cin >> n;
	int r = 0,count1=0,mul=1;
	while (n) {
		r = n % 10;
		n /= 10;
		count1++;//统计改数字有几位
		a[r]++;
		b[r]++;
	}
	//重组最大值
	int count2 = count1;
	for (int i = 9; i > 0; i--) {
		while (a[i] > 0) {//为什么要循环,是因为当出现重复的数字后所以要循环
			for (int j = 1; j < count1; j++) {
				mul *= 10;
			}
			max += i * mul;
			a[i]--;
			mul = 1;
			count1--;
		}
	}
	//重组最小值
	mul = 1;
	for (int i = 0; i <= 9; i++) {
		if (b[i] > 0 && i == 0) {
			count2 -= a[i];
		}
		while (b[i] > 0 && i !=0 ) {
			for (int j = 1; j < count2; j++) {
				mul *= 10;
			}
			min += i*mul;
			count2--;
			mul = 1;
			b[i]--;
		}
	}
	cout << max - min << endl;
	return 0;
}

分析:这道题是不简单。当然看你用什么方法,若用一维数组来解决的话其实没那么复杂,我用两个一维数组的目的是引入哈希存储思想。因为后面会有类似的题。大家可用一个一维数组来解决这个题。

是否通过:

21301 - 约瑟夫问题(经典问题!二刷)

时间限制 : 1 秒

内存限制 : 128 MB

n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号。

输入

n m(1≤m,n≤100)

输出

出圈的编号

样例

输入

10 3

输出

3 6 9 2 7 1 8 5 10 4

答案:

#include<iostream>
using namespace std;
#define MAX 101
int main() {
	int n, m;//n个人,数到m
	int a[MAX];
	cin >> n >> m;
	int count = 0;//记录数数,从1数到m后又从1开始计数
	int sum = n;//每退出一个人,直到最后一个人退出
	int k = 0;
	for (int i = 1; i <= n; i++) {
		a[i] = i;//注意下标从1开始
	}
	while(true){
		k++;//数数下标
		if (k > n) {
			k = k % n;
		}
		if (a[k]) {//只有当前位置没有退出时,数数才加1
			count++;
		}
		if (count == m) {//每次数到m
			if (a[k]) {
				cout << a[k] << ' ';
				sum--;
				if (sum == 0) {
					break;
				}
				a[k] = 0;//退出这个位置的人,设置为0表示退出
			}	
			count = 0;//每次退出一个人又要重新开始报数
		}
	}
	return 0;
}

分析:这个题难度还是很大的,当数数等于m时,得重新开始数。其次,当下标为k大于当前人数时,又得通过取模返回到下标为1的位置。其次,当访问到已经退出的下标时,数数不算。因为退出的人不能再数数。最后还得通过一个变量sum来记录人是否全部退出。一系列条件加起来,这个题难度就很大了。在做这个题时最好现在草稿纸上自己演算一遍理清思路。

是否通过:

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

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

相关文章

计算机操作系统第四版第六章输入输出系统—课后题答案

1.试说明I/O系统的基本功能。 隐藏物理设备的细节、与设备的无关性、提高处理机和I/O设备的利用率、对I/O设备进行控制、确保对设备的正确共享、错误处理 2.简要说明I/O软件的4个层次的基本功能。 用户层I/O软件&#xff1a;实现与用户交互的接口&#xff0c;用户可直接调用该层…

4.8、socket介绍

4.8、socket1. socket介绍1. socket介绍 所谓 socket&#xff08;套接字&#xff09;&#xff0c;就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端&#xff0c;提供了应用层进程利用网络协议交换数据的机制。从所处的地位…

阿里云centos7搭建ChatGPT网站

需要的环境 有一台外网的服务器 拥有一个OpenAI API Key Centos7&#xff08;其他服务器也行&#xff09; nodejs 前端github上 大神写的 https://github.com/ddiu8081/chatgpt-demo/ 一.安装node.js centos7 安装node.js 二.安装pnpm npm i -g pnpm三.下载web前端项目从…

【2023最新】超详细图文保姆级教程:App开发新手入门(3)

上文回顾&#xff0c;我们已经完成了一个应用项目创建、导入、代码更新、代码同步和代码提交&#xff0c;本章继续我们的新手开发之旅&#xff0c;讲述一下如何将开发完成的应用进行编译&#xff0c;生成可供他人安装、可上架的应用安装包。 6 应用打包 应用打包&#xff0c;…

27个必备的Python技巧,你一定要知道!

目录 01. 为什么使用缩进来分组语句&#xff1f; Guido van Rossum 认为使用缩进进行分组非常优雅&#xff0c;并且大大提高了普通 Python 程序的清晰度。大多数人在一段时间后就学会并喜欢上这个功能。 由于没有开始/结束括号&#xff0c;因此解析器感知的分组与人类读者之间…

免费英文在线翻译-英文自动翻译

免费的自动翻译器 作为一款免费的自动翻译器&#xff0c;我们的产品可以为全球用户提供高质量、高效率的翻译服务&#xff0c;帮助他们更好地沟通和交流。 现在&#xff0c;随着数字化的进一步发展&#xff0c;人们之间的跨文化交流越来越频繁。然而&#xff0c;语言偏差和文…

22-JavaScript

目录 1.什么是JavaScript&#xff1f; 1.1.JS、HTML、CSS关系 1.2.JS是如何运行的&#xff1f; 2.JS前置知识 2.1.第一个JS程序 PS&#xff1a;JS书写位置 2.2.JS书写格式 2.2.1.行内格式 ​2.2.2.内嵌格式 ​2.2.3.外部格式 2.3.注释&#xff08;script标签中&…

【软件测试】测试用例

目录 &#x1f337;1. 测试用例的基本要素 &#x1f337;2. 测试用例的设计方法 &#x1f333;2.1 基于需求进行测试用例的设计 ⭐️&#xff08;1&#xff09;功能需求测试分析 ⭐️&#xff08;2&#xff09;非功能需求测试分析 &#x1f333;2.2 具体的设计方法 &#…

【Python搞笑游戏】因蔡徐坤打篮球动作超火,被某程序员写成了一款游戏,画面美到不敢看,成功学到了精髓~(附源码免费)

导语 之前网络最火的梗&#xff0c;非“C徐坤打篮球”莫属。个人感觉&#xff0c;只有多年前的“春哥纯爷们”堪与匹敌&#xff01; 虽然说C徐坤打篮球是一个老梗了&#xff0c;但是确实非常搞笑&#xff0c;今天就跟着小编一起来回忆一下吧&#xff01; “我是练习两年半的…

qt - 隐式共享与d-pointer技术

文章目录前言1. 隐式共享2. d-pointer在隐式共享中的应用3. 二进制代码兼容4. d-pointer模式的实现5. QObject中的d-pointer前言 一般情况下&#xff0c;一个类的多个对象所占用的内存是相互独立的。如果其中某些对象数据成员的取值完全相同&#xff0c;我们可以令它们共享一块…

ESP32学习二-更新Python版本(Ubuntu)

一、简介 在一些场景里边&#xff0c;因为Python的版本过低&#xff0c;导致一些环境无法安装。这里来介绍以下&#xff0c;如何升级自己已安装的Python版本。例如如下情况&#xff1a; 二、实操 1.查看本地版本 python --version 2.添加源 sudo add-apt-repository ppa:jona…

FPGA时序知识点(基本方法总结就两点:1.降低时钟频率2.减小组合逻辑延迟(针对Setup Slack公式来的)

1.我们说的所有时序分析都是建立在同步电路的基础上的&#xff0c;异步电路不能做时序分析&#xff08;或者说只能做伪路径约束&#xff08;在设伪路径之前单bit就打拍&#xff0c;多bit就异步fifo拉到目的时钟域来&#xff09;&#xff09;。——FPGA 设计中寄存器全部使用一个…

逐一解释一下四个 “内存屏障” 是什么

什么是内存屏障&#xff1f;硬件层⾯&#xff0c;内存屏障分两种&#xff1a;读屏障&#xff08;Load Barrier&#xff09;和写屏障&#xff08;Store Barrier&#xff09;。内存屏障有两个作⽤&#xff1a; 阻⽌屏障两侧的指令重排序&#xff1b;强制把写缓冲区/⾼速缓存中的…

Matplotlib绘图

1.散点图 X1 [[3.393533211, 2.331273381], [3.110073483, 1.781539638], [1.343808831, 3.368360954], [3.582294042, 4.679179110], [2.280362439, 2.866990263], [7.423436942, 4.696522875], [5.745051997, 3.533989803], [9.172168622, 2.51…

面试官:说说MySQL主从复制原理

MySQL Replication&#xff08;主从复制&#xff09;是指数据变化可以从一个MySQL Server被复制到另一个或多个MySQL Server上&#xff0c;通过复制的功能&#xff0c;可以在单点服务的基础上扩充数据库的高可用性、可扩展性等。 一、背景 MySQL在生产环境中被广泛地应用&…

第十四届蓝桥杯题解

声明&#xff1a;以下都无法确定代码的正确性&#xff0c;是赛时代码&#xff0c;希望大家见谅&#xff01;思路可以参考&#xff0c;等后续可以评测之后再去修改博客内错误&#xff0c;也希望大家能够指正错误&#xff01; 试题A&#xff1a;日期统计 分析&#xff1a;这道题…

Linux工具——yum和vim

目录&#x1f34f;Linux软件包管理器-yum&#x1f34e;yum简介&#x1f34e;rzsz工具&#x1f34e;注意事项&#x1f34e;软件包查看&#x1f34e;如何安装和卸载软件&#x1f34f;Linux编辑器-vim&#x1f34e;vim的基本概念&#x1f34e;vim的基本操作&#x1f34e;vim正常模…

uniapp中canvas绘制图片内容空白报错原因总结

uniapp中canvas绘制图片内容空白报错原因总结&#xff0c;看完需要10分钟 问题图: 效果图&#xff1a; 目录 &#x1f9e8;&#x1f9e8;&#x1f9e8;首先定义画布canvas canvas画布初始值没有&#xff0c;导致没有绘制成功 &#x1f9e8;&#x1f9e8;&#x1f9e8;2.绘制图…

【二叉树】全家桶-管饱,你敢吃吗?

【二叉树扩展学习】&#x1f4af;&#x1f4af;&#x1f4af;1.【二叉树的创建】2.【二叉树的销毁】3.【二叉树的前序遍历】4.【二叉树的中序遍历】5.【二叉树的后序遍历】6.【二叉树的层序遍历】7.【二叉树的高度】8.【二叉树结点的个数】9.【第K层二叉树的结点个数】10.【二叉…

C语言之结构体内存对齐与内存的简单理解

文章目录 内存单元的理解结构体中内存对齐的规则为什么会存在内存对齐一、内存单元的理解 首先先要介绍一下C语言中一些常见的存储单元 bit 存放一个二进制位 Byte 1Byte 8 bit KB 1KB 1024 Byte MB 1MB 1024 KB GB 1GB 1024 M…