又过了一周,这周基本上没有做新题目,acm在这周搞了两次小测试,我的话比较遗憾,两次测试都没有完全正确地做出一道题,但有的题目在听了讲解之后,发现自己确实有一些地方没有想到,而且也有知识运用的错误,这周作业也发现了一些有趣的,好的做题方法。下面来讲讲具体的题目。
1.第一个是课堂测试的题目。题目如下:用户输入二元一次方程组ax+by=M cx+dy=N中a,b,M,c,d,N的值,编程确定方程组是否有解,若有解,判断是否有为一解。
这题目一开始我还没什么想法,竟然生硬地把x和y的值用代数表达式给写了出来,但你会发现,这并没有什么卵用。因为你无法判断方程组是否有解。后来老师提示了一下,要我们用数学方法去想,两个方程就是两条直线,要判断方程是否有解,不就是判断两条直线有没有交点吗?那不就是看斜率吗?是不是很奇妙,至少我当时有些醍醐灌顶。
2.第二个是作业题,题目就是两个整数的最大公约数和最小公倍数。
最大公约数用循环来求,从1开始,直到找到一个能同时被a,b都能整除的数。但最小公倍数确实一开始不知道怎么求,我问了AI,然后得出一个方法,即把a和b相乘,再除以最大公约数,就能得到最小公倍数,然后我自己在草稿本上验证了多组数据,全是对的,我造,这个真的牛逼,以前的数学学习中从来没有接触过这个方法,非常有意义,我便记了下来。
3.这个是第一次测试时的题目,关于中位数的。
这个题重要的是要把中位数从三个数中找出来,一开始我的想法比较垃圾,想着给每组数据进行排序,再把中位数找出来。但这个想法没能实现,后来听了学长讲解,发现使用逻辑运算符就能轻松解决三个数的大小问题,根本用不着取排序啥的
使用逻辑运算符的话思路很清晰,代码也是简洁易懂。
4.下一个是时间的题目
这个题目我觉得要注意的一点是当分钟是个位数时,例如3分钟,只会输出3,不会输出03,我这里卡了很久,然后查了一下资料,找到一个方法,若要输出03,使用“%02d”格式化字符串,它将会在输出时在整数前面补0,宽度为2位,若没有02,则只输出3。
5.今天做了几个比较水的题目,有的题干中说要用函数,但我不会函数的使用,直接按题目的意思做了下来,虽然答案对了,但不会用函数也是个大问题,我等下去考古,把之前acm讲函数的博客翻出来再学一下。这周任务比较多,确实没怎么写题目,下周得赶一赶了。
6.以后做题还是要减少AI的使用,我感觉测试的时候没写出来题目和这个AI使用太频繁也有关系,多和我们寝室那个牛逼的室友讨论讨论,交流学习一下。