小蚂蚁从立方体的一点走最短距离爬到对顶点,爬过的长度可能是整数,比如立方体三维分别是6,5,3,那么最短距离是10,但也不总是整数。
对于三边最长是M×M×M的立方体,当M=100时,有2060个边长均为整数的不一样的立方体,其蚂蚁爬过的最短距离是整数,而M=99时,有1975个不同的立方体。
求立方体个数超过一百万时M的最小值。
其实这个题目不难,关键点在于不需要计算出具体满足题意的值,只需要计数即可。
不妨设M=a≥b≥c,那么2≤b+c≤2a,斜边长是√aa+(b+c)2,如果斜边长是整数,那么b和c可以在一定范围内变化。b最小也就是b+c的一半或者一半加一,最长的话就是等于a,同时要满足c≥1。所以很容易通过某个给定的a来得到满足条件的个数。
1 | int GetCountByA(int a) |
对a,也就是M进行遍历,当总数大于一百万时停止,得到要求的M。
1 | int count = 0; |