PTA/OJ

1、然后是几点

题目描述:

有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。

读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530;0 点 30 分表示为 030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。

输入格式:

输入在一行中给出 2 个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530;0 点 30 分表示为 030。流逝的分钟数可能超过 60,也可能是负数。

输出格式:

输出不多于四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。

代码呈现:

#include <stdio.h>
int main () {int N,M,h,m,r;scanf("%d %d", &N, &M);h = N/100; // 这里N/100赋值给h,h就是从0点开始经过的时间的小时部分m = N%100; // 这里N%100赋值给m,m就是从0点开始经过的时间的分钟部分m += M;if (m >=60) {  // 如果加上流逝的分钟数后,分钟数大于等于60,则需要进位。h += m/60;m %= 60;}else if (m < 0) { // 如果加上流逝的分钟数后,分钟数小于0,则需要借位。m = -m;       // 先给m取反,方便计算。r = (m-1)/60+1; // 当m属于[1,60],借1位; m属于[61,119]借2位, 所以有这样的公式h -= r;    m = 60*r-m;}printf("%d%02d", h%24, m); return 0;
}

2.计算火车运行时间

题目描述:

本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。

输入格式:

输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。

输出格式:

在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。

代码呈现:

#include <stdio.h>
int main(void) {int a1,a2,hh,mm;scanf("%d %d",&a1,&a2);hh=a2/100-a1/100;mm=a2%100-a1%100;if(mm<0){mm=mm+60;hh=hh-1;}printf("%02d:%02d",hh,mm);return 0;
}

3.兔子繁衍问题

题目描述:

一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?

输入格式:

输入在一行中给出一个不超过10000的正整数N。

输出格式:

在一行中输出兔子总数达到N最少需要的月数。

代码呈现:

// 1  1  2  3  5  8  13
// 0  0  +1 +1 +2 +3 +5
#include<stdio.h> 
int main()
{int N;int a = 1;int b = 1;int x = 2;int t = 2;scanf("%d", &N);if (N == 1)printf("1");elsewhile (x <= N){x = a + b;a = b;b = x;t++;if (x >= N){printf("%d", t);break;}}
}

4.顺时针矩阵

题目描述

读入20内正整数正整数n,输出顺时针分布的矩阵。矩阵内容为1,2,到n*n。

输入格式:

每个实例包含一个20内正整数。

输出格式:

顺时针分布的矩阵,每个数据占4位。

输入样例:

7

输出样例:

19 20 21 22 23 24 1
18 37 38 39 40 25 2
17 36 47 48 41 26 3
16 35 46 49 42 27 4
15 34 45 44 43 28 5
14 33 32 31 30 29 6
13 12 11 10 9 8 7

代码呈现

#include<stdio.h>
int main() {int x, y, n, m;int N[20][20];int math = 1;scanf("%d", &n);if (n % 2 == 0)m = n / 2;elsem = n / 2 + 1;for (int i = 0; i < m; i++) {for (x = i, y = n - i - 1; x < n - i - 1||x==m-1; x++)N[x][y] = math++;for (x = n - i - 1, y = n - i - 1; y > i; y--)N[x][y] = math++;for (x = n - i - 1, y = i; x > i; x--)N[x][y] = math++;for (x = i, y = i; y < n - i - 1; y++)N[x][y] = math++;}for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++)printf("%4d", N[i][j]);printf("\n");}
}

5.字符串转换成十进制整数

题目描述:

输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。

输入格式:

输入在一行中给出一个以#结束的非空字符串。

输出格式:

在一行中输出转换后的十进制数。题目保证输出在长整型范围内。

输入样例:

+-P-xf4+-1!#

输出样例:

-3905

题目分析:

正负判断,找到第一个十六进制数,寻找之前有没有‘-’;
找到所有十六进制数
转化为十进制数(字符转化为数字

代码解决:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main() {char str[80];char str2[80];fgets(str,80,stdin);int i = 0;int t = 0;int sum = 0;for (i = 0; str[i] != '#'; i++) {if ((str[i] >= '0' && str[i] <= '9') || (str[i] >= 'a' && str[i] <= 'f') || (str[i] >= 'A' && str[i] <= 'F'))break;}for (int j = 0; j < i; j++) {if (str[j] == '-') {printf("-");break;}}for (i = 0; str[i] != '#'; i++) {if ((str[i] >= '0' && str[i] <= '9') || str[i] >= 'a' && str[i] <= 'f' || str[i] >= 'A' && str[i] <= 'F') {str2[t++] = str[i];}}str2[t] = '\0';for (int j = 0; j < t; j++) {if (str2[j] >= '0' && str2[j] <= '9')sum += (str2[j] - 48) * (int)pow(16, t - 1 - j);else if (str2[j] >= 'a' && str2[j] <= 'f')sum += (str2[j] - 97+10) * (int)pow(16, t - 1 - j);elsesum += (str2[j] - 65+10) * (int)pow(16, t - 1 - j);}printf("%d", sum);
}

6.A + B Problem

题目描述

Calculate A + B.

输入格式

Each line will contain two integers A and B. Process to end of file.

输出格式

For each case, output A + B in one line.

Sample Input

1 1

Sample Output

2

代码呈现

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int x[200] = { 0 }, y[200] = { 0 }, z[210] = { 0 };//将数组元素全部初始化为0
int main()
{char a[200], b[200];//把大数存储为字符串形式的数组 int len, len1, len2;//定义三个长度,后续用于存储字符串长度while (scanf("%s%s", a, b) != EOF) {//输入a,b字符串len1 = (int)strlen(a);//让len1为字符串a的长度,也就是大数a的位数len2 = (int)strlen(b);//让len2为字符串b的长度,也就是大数b的位数int i, j = 0, k = 0;//定义循环变量for (i = len1 - 1; i >= 0; i--)//让下标从长度最后一位开始循环,把大数倒序储存到数组中,即字符串为123456,则数组为654321{x[j] = a[i] - '0';//把数组a倒着储存在数组x中j++;//递减,然后循环,完成数组x倒叙储存数组a的操作}for (i = len2 - 1; i >= 0; i--)//以同样的方法,将数组b倒叙储存为数组y {y[k] = b[i] - '0';k++;}if (len1 > len2)//比较数组长度(也就是大数大小);让len等于最长的长度len = len1;elselen = len2;i = 0;//从最低位(个位)开始进行计算int m = 0;for (i = 0; i < len; i++)//循环相加并储存在新数组z中,短的len不够补0,也就是给原来的大数前加0(不影响大数大小) {z[i] = (x[i] + y[i] + m) % 10;//将所得数的个位存到数组z[i]中去if (x[i] + y[i] + m >= 10)//判断两个位上的数相加是不是超过10,如果过了,就进1,没过,就不进m = 1;//加在下一次循环中,类似于过10进1;elsem = 0;}if (x[i - 1] + y[i - 1] + m >= 10)//判断运算的最大位的和是否>=10 z[i] = 1;//数组为i位时,下标是从0到i-1,如果最大一位的和过10了,就多一位数组元素存放过10进的1elsei = i - 1;//如果没过,最大位就是i-1for (; i >= 0; i--)//让数组下标从小到大循环输出,倒序输出数组zprintf("%d", z[i]);printf("\n");}return 0;
}

7.你今天刷快手了吗

输入格式:

在第一行给两个整数n和m(1≤n≤1000,0≤m≤10^4),n代表你们班上的人数,m代表数据的条数,接下来m行每行给一组数据,格式为:学号 进入时间 退出时间,你们班的学号为从0~n-1编号并且为三位数。题目保证给出的所有时间均是同一天之内的。

输出格式:

将每个同学一天中刷快手的总时间从小到大排序输出(若出现并列情况,则按学号从小到大输出),输出格式为:学号 时间,最后输出最长的时间。

注:输出和输出的学号为三位数(不足三位补前导0),输出的时间格式为:00:00:00

输入样例1:

3 5
000 19:48:30 19:59:24
002 18:45:40 19:01:20
000 21:32:28 21:53:30
001 12:30:16 12:43:19
001 13:05:36 13:37:33

输出样例1:

001 00:45:00
000 00:31:56
002 00:15:40

输入样例2:

3 5
000 12:03:31 12:13:12
002 12:00:28 12:54:41
001 16:04:44 16:34:47
001 07:30:29 07:54:39
000 23:17:18 23:29:33

输出样例2:

001 00:54:13
002 00:54:13
000 00:21:56

代码呈现

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int time(int h1, int m1, int s1, int h2, int m2, int s2) {return (h2 * 60 * 60 + m2 * 60 + s2) - (h1 * 60 * 60 + m1 * 60 + s1);    //计算经过的总时长并统一为秒
}
int main() {int n, m;int k;int num;int temp;int h1, h2, m1, m2, s1, s2;int N[1000][2];int t = 0;int flag = 1;for (int i = 0; i < 1000; i++) {N[i][0] = i;                                 //下标为0记录学号N[i][1] = 0;                                 //下标为1记录时长}scanf("%d%d", &n, &m);if (m == 0) {                                    //0条记录特殊情况for (int i = 0; i < n; i++) {printf("%03d 00:00:00\n", i);}return 0;}for (int i = 0; i < m; i++) {scanf("%d", &num);scanf("%d:%d:%d", &h1, &m1, &s1);scanf("%d:%d:%d", &h2, &m2, &s2);for (int j = 0; j < t; j++)                  //是否已有记录的学号{if (num == N[j][0]) {N[j][1] += time(h1, m1, s1, h2, m2, s2);flag = 0;break;}}if (flag == 0) {                            //如果学号已记录跳过接下来记录的操作flag = 1;continue;}N[t][0] = num;                              //记录新学号和时长N[t][1] += time(h1, m1, s1, h2, m2, s2);t++;}for (int i = 0; i < t - 1; i++)                     //选择排序{k = i;for (int j = i + 1; j < t; j++){if (N[j][1] > N[k][1])                     {k = j;}if (N[j][1] == N[k][1]) {                  //相同时间按照学号排序if (N[j][0] < N[k][0])k = j;}}if (k != i){temp = N[k][1];                           //学号和时间交换N[k][1] = N[i][1];N[i][1] = temp;temp = N[k][0];N[k][0] = N[i][0];N[i][0] = temp;}}for (int i = 0; i < t; i++) {printf("%03d %02d:%02d:%02d\n", N[i][0], N[i][1] / 3600, N[i][1] / 60 % 60, N[i][1] % 60);}if (t < n) {for (int i = 0; i < n; i++) {for (int j = 0; j < t; j++) {                  //每有一个未记录的学号输出一条if (i == N[j][0])flag = 0;}if (flag == 1) {printf("%03d 00:00:00\n", i);}elseflag = 1;}}
}

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

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

相关文章

【蓝桥杯EDA设计与开发】资料汇总以及立创EDA及PCB相关技术资料汇总(持续更新)

[18/01/2024]&#xff1a;目前为了准备蓝桥杯做一些资料贴&#xff0c;于是写下这一篇博客。 各种资料均来源于网络以及部分书籍、手册等文档&#xff0c;参考不保证其准确性。 如果在准备蓝桥杯&#xff0c;可与我私信共同学习&#xff01;&#xff01;&#xff01;&#xf…

大数据开发之Hadoop(Yarn)

第 1 章&#xff1a;Yarn资源调度器 思考&#xff1a; 1、如何管理集群资源&#xff1f; 2、如何给任务合理分配资源&#xff1f; Yarn是一个资源调度平台&#xff0c;负责为运算程序提供服务器运算资源&#xff0c;相当于一个分布式的操作系统平台&#xff0c;而MapReduce等运…

防止AWS主机被攻击

虚拟机经常连接不上 由于工作需要&#xff0c;自己在亚马逊买了台EC2主机&#xff0c;并在上面安装了工作要用的软件&#xff0c;以前是只有关键时间点才会连不上&#xff0c;可是最近几乎每隔一天就连不上&#xff0c;导致工作受影响&#xff0c;所以决定花时间看看怎么回事。…

分享一个基于easyui前端框架开发的后台管理系统模板

这是博主自己在使用的一套easyui前端框架的后台管理系统模版&#xff0c;包含了后端的Java代码&#xff0c;已经实现了菜单控制、权限控制功能&#xff0c;可以直接拿来使用。 springboot mybatis mybatis-plus实现的增删查改完整项目&#xff0c;前端使用了easyui前端框架。…

OpenAI/ChatGPT Plus 支持的虚拟卡有哪些

最近&#xff0c;有关 OpenAI/ChatGPT Plus 需要信用卡的讨论越来越多。在这篇文章中&#xff0c;我将分享一些我在绑定信用卡过程中得到的经验和教训&#xff0c;以及 OpenAI/ChatGPT Plus 支持的卡类型。 不支持的卡 根据 OpenAI 的地区限制&#xff0c;国内和香港的卡都不…

JAVA多线程问题 — 如何正确使用异步线程和线程执行器?

先看下线程池最基本的用法示例; 1、ThreadPoolExecutor 使用ThreadPoolExecutor 定义一个线程池: /** * 线程池 */ private static final ExecutorService executorService = new ThreadPoolExecutor(3, 10, 60, TimeUnit.SECONDS,new ArrayBlockingQueue<>(100),r …

文件系统和IO流

目录 ​文件系统和IO流 一:文件的认知 认识文件 树型结构组织和⽬录: 文件路径&#xff08;Path): 文件形式: 二:File的方法 File的概述: File的属性 File的构造方法 File常用的get系列方法 ⽰例一:观察get系列的特点和差异 File常用的增,删方法 示例二:普通文件…

Unity 编辑器篇|(十)Handles (全面总结 | 建议收藏)

目录 1. 前言2 参数总览3 Handles两种使用方式3.1 基于Editor类的OnSceneGUI3.2 基于EditorWindow 4 Handles绘制4.1 Draw&#xff1a;绘制元几何体(点、线、面)4.1.1 抗锯齿&#xff1a; DrawAAPolyLine 、 DrawAAConvexPolygon4.1.2 绘制实线: DrawLine 、 DrawLines 、DrawP…

openssl3.2 - 官方demo学习 - mac - siphash.c

文章目录 openssl3.2 - 官方demo学习 - mac - siphash.c概述笔记END openssl3.2 - 官方demo学习 - mac - siphash.c 概述 MAC算法为 SIPHASH, 设置参数(C-rounds, D-rounds, 也可以不设置, 有默认值) 用key初始化MAC算法, 算明文的MAC值 笔记 /*! \file siphash.c \note op…

排序:非递归的归并排序

目录 递归与非递归的思想对比&#xff1a; 递归&#xff1a; 非递归&#xff1a; 代码解析&#xff1a; 完整代码&#xff1a; 递归与非递归的思想对比&#xff1a; 递归&#xff1a; 在之前的归并排序&#xff0c;它的核心思想是通过不断的分割&#xff0c;从一个数组变…

为什么说代码注释是程序员必备的技能?

代码注释是对代码中的特定部分或整体功能的解释和说明。注释添加在代码中&#xff0c;是给程序员看的&#xff0c;当系统运行程序&#xff0c;读取注释时会越过不执行。随着技术的发展&#xff0c;现在具有百万行代码的程序已经很常见了&#xff0c;在这样一个大型的代码中&…

微信小程序实现监听页面返回保存页面数据

因为使用监听滑动的时候根部左滑还是监听不到退而求其次 该方法会在返回后的页面弹窗 onUnload() {// console.log("VisitDetail onUnload")if (this.pagesList.length > 2 && this.detail.status 2) {if (this.pagesList[this.pagesList.length - 2] …

Angular管道中处理异步数据

需求 将图片的相对路径作为参数请求接口返回一个图片URL&#xff0c;这样直接放到img标签上面渲染图片&#xff0c;由此想到使用自定义管道的功能&#xff1b; 实现 // minio.pipe.ts import { Pipe, PipeTransform } from angular/core; import { _HttpClient } from delon…

HTML 表单

文章目录 表单什么是表单GET和POST两种提交方式有什么不同?表单元素表单项外文本单行文本输入框单行文本密码框单选框复选框下拉列表框上传文件隐藏域填写邮箱填写电话填写数字填写日期进度条多行文本输入框提交按钮取消按钮 用户注册案例 表单 什么是表单 form:表单元素 此…

机器人强化学习-双机械臂

概要 基于 robosuite 库&#xff0c;进行双臂机器人学习训练 环境测试 下面展示下分别控制两个机械手随机运动的画面&#xff1a; 双臂显示场景如下&#xff1a;双臂调用代码如下&#xff1a; import numpy as np import robosuite as suite import robomimic import rob…

【vue2】状态管理之 Vuex

文章目录 一、介绍1、概念 2、工作示意图3、安装4、简单示例 二、核心1、State1.1 组件中获取 Vuex 的状态1.2 mapState 辅助函数1.3 对象展开运算符 2、Getter2.1 基本使用2.2 通过属性访问2.3 通过方法访问2.4 mapGetters 辅助函数 3、Mutation3.1 定义 mutation3.2 commit 提…

Go的并发练习题目

经典并发题目 现在有4个协程&#xff0c;分别对应编号为1,2,3,4,每秒钟就有一个协程打印自己的编号&#xff0c;要求编写一个程序&#xff0c;让输出的编号总是按照1,2,3,4,1,2,3,4这样的规律一直打印下去 type Token struct { }func newWorker(id int, ch chan Token, nextC…

多线程排序(java版)

&#x1f4d1;前言 本文主要是【排序】——多线程排序的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句&#x…

Docker-02-镜像项目部署

Docker-02-镜像&项目部署 文章目录 Docker-02-镜像&项目部署一、镜像①&#xff1a;镜像结构②&#xff1a;Dockerfile③&#xff1a;构建镜像01&#xff1a;构建02&#xff1a;查看镜像列表03&#xff1a;运行镜像 二、网络①&#xff1a;容器的网络IP地址②&#xff…

数据中心负载测试的常用工具和技术有哪些?

数据中心负载测试是评估系统在高负载下的性能和稳定性的重要手段。通过模拟大量用户并发访问&#xff0c;可以检测系统的瓶颈和潜在问题&#xff0c;为优化系统性能提供依据。以下是一些常用的数据中心负载测试工具和技术&#xff1a; Apache JMeter&#xff1a;JMeter是一个开…