饿了么笔试第二题

😅智力题,没 A 出来
下来问 gpt 有了一定思路

直接顺序序列计为 T
T=1*1+2*2+......
直接用平方和公式 O(1)就能计算

如果 T%3=0 那就是答案
如果 T%3=1 那么我们可以交换两个相邻的数,结果就会减少 ai*i+aj*j-ai*j-aj*i=(i-j)*(ai-aj)
由于我们是顺序序列,交换相邻的数结果减少 1*1=1,就有答案了
如果 T%3=2 那么我们可以交换两个相邻的数重复两次就行

总结
如果 T%3=0   顺序输出就行
如果 T%3=1    交换 1 2 顺序输出,也就是 2 1 3 4 5 6.....
如果 T%3=2    交换 2 1 然后交换 3 4 输出,也就是 2 1 4 3 5 6 7 8 9.....

#牛客AI配图神器#
全部评论
找规律做的,也只做到98% 死活过不去剩下的
1 回复 分享
发布于 03-14 21:11 浙江
T 感觉不用直接计算,因为 i^2 % 3 不是0就是1。i^2 % 3 = 0的时候,i % 3 ==0。所以只要计算[1-n] 不整除3的个数,这些都提供了1,在对这些和取余。就是最后平方和取余的结果。(这样就防止n超大的时候,避免直接计算)
点赞 回复 分享
发布于 03-14 21:16 天津
题是啥
点赞 回复 分享
发布于 03-14 23:14 河北
回溯能写吗
点赞 回复 分享
发布于 03-15 02:33 陕西
先只考虑n大于等于6的情况可以将1-n按照模3分组,得到x0个0,x1个1,x2个2,该问题变为匹配问题,先考虑完美配对,则最终和模3值v=(x1+x2)%3,如果v=0,则直接输出1-n顺序排列,如果v=1,则将配对中的0-0,1-1改为0-1,0-1;如果v=2 则将0-0,0-0,1-1,1-1 改为 四个0-1。再考虑n<6的情况,可以直接穷举
点赞 回复 分享
发布于 03-17 22:12 甘肃

相关推荐

评论
6
4
分享

创作者周榜

更多
牛客网
牛客企业服务