洛谷:从零开始的步伐(1)

菜鸟的自救

前言——计划的诞生:不想颓废。

本人大一新生一枚,电子信息类专业,编程技术堪称菜鸟中菜鸟。为挽救大一上学期的颓势。从现在开始写博客来拯救自己。
是菜鸟不要紧,关键是菜鸟还不知道扑腾翅膀就必死无疑了。
首先第一计划是从洛谷上的题目开始。虽然已经落后了许多,但是

“种一棵树最好的时间是十年前,其次是现在。”

不多说,开始。
Part 1.
洛谷新手村-数组之前的题目(语言:C语言)

(一)洛谷的第一个任务

洛谷的第一个任务,就是看你是不是接触过这玩意
第一模块仅在此陈列代码,简单分析。

P1000 超级玛丽游戏

【代码】略。
【分析】任性一点,根据题目的描述,只需按行输入,记得换行,注意不要留下前面的空白和漏掉后面的星号即可,有点像HelloWorld的进化版,是面世程序。

P1001 A+B Problem

【代码】

#include <stdio.h>

int main() {
    int a,b;
    scanf("%d%d",&a,&b);
    printf("%d", a+b);
    return 0;
}

【分析】简单的小学算术问题。考察scanf和printf两个函数的运用,scanf有&,而printf没有,没有难度。

P1412 小玉买文具

【代码】

#include <stdio.h>
 int main()
 {
 	int a,b ; 
 	scanf("%d%d",&a,&b);
 	printf("%d", (10*a + b )/19);
 	return 0;
	  }

【分析】听过翁恺老师算时间差的就知道,此题其中一种解法是:单位最小化
就是说面对不同单位表达的数字,将其转化为最小单位。这样就变成了一个数字,便于计算。然后再对计算后的数字进行单位恢复(有些题目不需要,只需满足计算要求即可,如此题)。
ps:针对此题不适用第二种方法:
翁恺老师针对分钟借位的情况还用了暴力减法,然后对后果进行分情况处理。这样不失为一种“快意”的方法,但是对于此题比较棘手(除法),暂不讨论。

P1425 小鱼的游泳时间

【代码1】

#include <stdio.h>
int main ()
{
	int a , b;
	int c , d;
	scanf("%d%d",&a,&b);
	scanf("%d%d",&c,&d);//输入两个时间
	int t1 = 60*a + b;
	int t2 = 60*c + d;//单位最小化 
	int t = t2 - t1;//算时间差 
	printf("%d %d", t/60 , t%60 );//单位还原并输出 
	return 0; 
}

【分析1】此题就是翁恺老师说的时间差问题,主要是处理分钟借位的问题。可用单位最小化。简单补充一下%(取余计算符)和/(除法运算符)的用途。
放一个大佬的博文链接,没有抄袭的意思,不要捶我。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sinat_33523805/article/details/79578528
————————————————
版权声明:本文为CSDN博主「Stella-Chen」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

因为这题完全可用暴力相减,再处理后果的方法。因此:
【代码2】

#include <stdio.h>
int main()
{
	int a , b;
	int c , d;
	scanf("%d%d", &a , &b );
	scanf("%d%d", &c , &d );//输入两个时间
	int hour = c - a;//算出小时数的差 
	int minute = d -b;//算出分钟数的差 
	if (minute < 0)//判断是否出现分钟结位 
	{
		minute += 60;//分钟数归正 
		hour--;//分钟位借了一个小时位 
	} 
	printf("%d %d", hour , minute );
	return 0;
}

【分析2】没什么理解难度,就写代码角度来讲感觉这种方法比较顺畅,但是就第一种方法感觉聪明一些。关键就是处理分钟借位的情况(避免分钟数为负数)。
ps:总是提到翁恺老师,是浙大的一个老师,在MOOC上有网课,找不到的话,B站搜“C语言”也可以搜得到。

以上就是Part 1. (一)洛谷的第一个任务 的全部内容。
欢迎大家的指正和补充。
2020/2/20 21:13 星期四

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值