C题没意思,水。
D题是很好的题,首先判断2009是个合数,之后分解质因数,得7*7*41,那么当n>=41时不用判断,肯定余数为零。41之前的我用了__int64,可是只能算到39! 就存储不下了,之后我想先算出40!%2009,来特殊输出,但是不行,算错了。之后在再次算40!%2009的时候,我突然想起来可以这样算,每乘以一个数之后对2009求余,之后用余数再接着乘,再求余,直到求出结果。于是我就这个做了,可是超时,因为我删原来的代码时把40以上的那个判断给删了,于是我加上了,可是还超,于是我把41以内的都先算好保存在一个数组内,之后直接调用,于是过了。
一下是源代码:
E题是并查集,我在上面花了一个多小时近两个小时,可是一直不过,结束后看大家也都没过,还待研究。
F题刚开始一直没看懂,懂了也就好写了,真水。
G题看着很简单,也确实很简单,可是出现了太多失误。原理很简单,直接相加,遇26进1,类似大整数加法。
以下是源代码:
H题太失败了,gets()应该放在while(gets()){}里,而不是while(1){gets();},否则OLE.
J题按照01背包问题的方法,MLE,只会01还是不行啊。