这题一开始暴力解,发现一直超时,还是我太年轻了。
以上是我的反面教材
后来看了评论区大佬的做法,发现有巧解。
思路分析:
1.子序列的长度是有个最大值的,设长度为len,那么子序列就为a+1,a+2…a+len,
那么运用等差数列的公式得,[(a+1)+(a+len)]len/2=M。那么M2=[(a+1)+(a+len)]len。
那么len<sqrt(M2);
2.进而推出了a=M/len-(len+1)/2;
3.贴上代码
这题一开始暴力解,发现一直超时,还是我太年轻了。
以上是我的反面教材
后来看了评论区大佬的做法,发现有巧解。
思路分析:
1.子序列的长度是有个最大值的,设长度为len,那么子序列就为a+1,a+2…a+len,
那么运用等差数列的公式得,[(a+1)+(a+len)]len/2=M。那么M2=[(a+1)+(a+len)]len。
那么len<sqrt(M2);
2.进而推出了a=M/len-(len+1)/2;
3.贴上代码