A题:
题目大意,有三个房子,一开始你在第一个房子里,第一个房子与第二个房子的距离为a,和第三个的距离为b,第二个房子和第三个的距离是c。现在有t个单位的时间,第一时刻你在第一个房子吃饭,每个时刻你要到另一个房子里去吃东西,想当然,作为一个单纯的吃货,当然是多吃少走咯,所以他每次走最短的路径。问要走的最小距离。
这个题直接暴力解决,因为第一题打卡感觉不需要用算法,节省时间吧。
C题:
题意:
给出一个数n,求所有的x,满足x + (x的每一位数字) == n 。先输出满足的x的个数k ,按照升序输出所有的x。
分析:
直接暴力就可以了。不过n<=1e9不能每次从1开始
由于所以的位数之和一定小于100,所以最多可以从暴力枚举n-100~n就可以了。
这周开了数论的题目,两天看了一个题,感觉把理论运用起来还是需要适应。
A题:
题意很简单,用数学的语言描述就是:x, y, z∈N,给定一个数n,找出所有的x, y, z ≤ n,使得x2 + y2 = z2成立。
解题思路:这个题目主要是寻找勾股数组。勾股数组就是能形成a^2+b^2=c^2的一组数(a,b,c),其中a,b,c三个数是互素的,对于任意勾股数组
a=s*t;
b=(s*s-t*t)/2;
c=(s*s+t*t)/2
其中s>t且s和t互素,开始想着枚举a,b,c,但是看了100w的数据量,肯定超时,想到定义中可以根据s和t来求得a,b,c,枚举s和t就行了。
之前只知道勾股数的形式,还真的不知道其中三条边可以用两个数来表示,所以一直在想着枚举三条边。在百度上查了勾股数组的性质后才知道这个性质。