第九周训练总结(一)

    昨天晚上打的比赛,出了两道题。

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就行了。

之前只知道勾股数的形式,还真的不知道其中三条边可以用两个数来表示,所以一直在想着枚举三条边。在百度上查了勾股数组的性质后才知道这个性质。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值