提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
@TOC7-16 然后是几点(15 分)
本文试图帮助到那些想通过本题训练思维的小白,为他们启发思维_(:з」∠)_
如果对此题一头雾水,建议直接跳转思路
本文不含高级解法
好了,自己当自己的省流小助手!
先放上代码:
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include<math.h>
int main(){
int shart,past;
scanf ("%d %d",&shart,&past);
int a,b;
a=shart/100;
b=shart%100;
b=b+past;
if(b>=0)
{
while(b>=60){
b -=60;
a++;
}
}
else {
while(b<-60)
{
b+=60;
a--;
}
b=b+60;
a--;
}
if(b<10){
printf("%d0%d",a,b);
}
else printf("%d%d",a,b);
return 0;
}
思路
先放上原题
首先分析输入输出格式
输入格式:
输入在一行中给出 2 个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530;0 点 30 分表示为 030。流逝的分钟数可能超过 60,也可能是负数。
—简单寻找加粗字体所代表的关键词,我们知道了这道题起码需要两个输入两个整数了
可别小看它,它帮助我们,我们打破了看着题目无从下手的状态
这是个好的开始
大概就是这个样子的`
scanf("%d %d",&x,&y);
然后是输出格式:
输出不多于四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。
由于一天只有24小时,这里又是前两位表示小时
运算正确的话,应该也不会超过四位数
C语言输出时本就不带前导零,所以这里实际对输出没啥要求
接下来是题干:
有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。
读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530;0 点 30 分表示为 030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。
简单寻找关键词,我们就可以发现题目想让我们干什么和潜在的问题
我们需要对题目所给的两个数进行计算,计算时间点A经过一段时间后的时间点B,时间点B就是答案
‘当小时为个位数时`
显然,有不同的情况了,于是我们需要一个这样的分支:
if(x<10){
printf("%d0%d",x,y);
}
else printf("%d%d",x,y);
然后是可能是负数的应对方案
首先,我们先想想如果是正数该怎么计算?
很简单,加上去就好了呀
那负数呢?
EMM…在这题里好像没什么区别
我们好像顺便还把核心思路想好了hhh
————————————————————————————————
接下去是解题算法:
用当前时间加上经过分钟数
但第一个数字是时间+分钟四位数,显然不能直接相加
能不能想个办法让第一个数字身首异处?
更确切地说,让小时和分钟分开?
还真有,向下取整的除法可以把去除数字里最右边的x位
如13/10=1
取余可以保留最右边的x位
如13%10=3
本题中,我们可以先用两个变量储存输入,再用运算对第一个数字进行处理
int shart,past;
scanf ("%d %d",&shart,&past);
int a,b;
a=shart/100;//此时a是第一个数字的前两位
b=shart%100;//b是第一个数字的后两位
拿测试用例模拟,就是这样的
然后就可以用b和第二个数字相加了~
b=b+past
这里我们把加完之后的结果放回保存在b里
加完之后是这样的
此时b超出60,显然不可以直接输出,于是自然想到进位
怎么进呢?
时间是逢六十进一,我们是逆过来,分钟减60的同时,别忘了给小时进一
那如果分钟数很大呢?显然我们需要做很多次,直到无法再进一为止
while(b>=60){
b -=60;
a++;
}
此时程序是这样的
int main(){
int shart,past;
scanf ("%d %d",&shart,&past);
int a,b;
a=shart/100;
b=shart%100;
b=b+past;
while(b>=60){
b -=60;
a++;
}
if(b<10){
printf("%d0%d",a,b);
}
else printf("%d%d",a,b);
return 0;
}
然后拿到pta一测试,结果是这样的
负数不行?我们回想一下我们的逻辑:
哪里出了问题?
问题是负数就给他负数!
我们用1120 -110作为例子去过一遍流程(其实这里不用,一个分支猜都猜得出)
最后是这样子的
显然 ,-90不是能输出的结果
如果第二个输入为负数,相加后得到的分钟数不一定能大于60!
容易想到的方法就是再加一个判断是否是负数的分支
把思路变成这样
代码是这样子的:
if(b>=0)
{
while(b>=60){
b -=60;
a++;
}
}
else {
while(b<-60)
{
b+=60;
a--;
}
b=b+60;
a--;
}
其中,负数部分算法中,while循环执行结束后,b可能仍为负数
如我们的例子中,while循环执行结束后是这样的:
显然我们需要从小时数(a)中借一,让分钟数(b)回到整数的样子
于是就有了
b+=60;
a–;
此时程序是这样的:
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include<math.h>
int main(){
int shart,past;
scanf ("%d %d",&shart,&past);
int a,b;
a=shart/100;
b=shart%100;
b=b+past;
if(b>=0)
{
while(b>=60){
b -=60;
a++;
}
}
else {
while(b<-60)
{
b+=60;
a--;
}
b=b+60;
a--;
}
if(b<10){
printf("%d0%d",a,b);
}
else printf("%d%d",a,b);
return 0;
}
再次测试
好了,本文到此结束,希望能帮到大家
肯定有更好的算法,此处不再赘述,欢迎交流!
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、pandas是什么?
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、使用步骤
1.引入库
代码如下(示例):
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
2.读入数据
代码如下(示例):
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
该处使用的url网络请求的数据。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
今天的文章c语言p1=&a_c++编程题库分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/85457.html