Visit Counter
AmazingCounters.com

源文件 seq.???(pas/c/cpp)
可执行文件 seq.exe

输入文件 seq.in

输出文件 seq.out

在一个给定的整数序列中,寻找一个最长的、各数之和mod3等于0的子序列。将该子序列的长度输出。

输入数据:

   第1行仅一个数n(1<=n<=10000),表示序列的长度。

   接下来的n行,每行一个不超过20000的正整数,给出了这个序列。

输出数据:

   仅一行,输出符合条件的子序列的最长长度。

样例:

输入 输出

7 5

10

6

7

12

4

7

22
1、分析:虽然我考试直接就过了,但是值得一说。
把每个数都mod3,不影响结果。
3 的倍数 有
1 + 2
1 + 1 + 1
2 + 2 + 2
0
0就直接算上了,所以不讨论0
把一和二都组合上
然后就是只剩1或只剩2
3个1或2有组成3的倍数
所以最后只有三种情况
1、一个不剩
2、剩一个,没办法,直接输出。
3、剩两个:
1、序列里1和2都有:把一个1和2的组合分开,拿其中的一个和剩下的两个组合,
这样就只剩1个。。。
2、否则: 没办法
总结一下
1、 输出序列长度的时候:一个不剩
2、 输出序列长度 - 1的时候:剩一个或剩两个且序列里1和2都有
3、 输出序列长度 - 2的时候:不符合上述情况
2、总结:考试时候拿笔算一算还是有好处的
3、归类:数论