这场考试考到一半爆炸了。
先看T1,看不懂题,然后看到了样例解释,会了,切了。
然后看T2,应该是个规律题,打个表就行了。
再看T3,应该是什么反演啥玩意的,但是一看范围,暴力枚举可过????
于是先打T3,忘了指数取模用欧拉定理,先直接用的费马小,但是死活不过样例,发现模数非质,改!
然后发现,组合数不能求,lucas!
然后发现,模数合数有平方因子(算错了),思考人生20min
然后又发现我算错了,接着调!
CRT又错了?调!
组合数也没算对?调!
终于都算对了,还是过不了样例。
我死了。
去看T2的表,也推不出来式子,直接交的表。
T3交上去吧,估计也许可能大概有一两个点。
然后出分了。0+30+0。。。。
T1炸了??????
然后疯狂看T1,woc输出格式错了。Case -1交了又wa了,10分
woc。人品。。。hx帮我调了一年终于发现下面这个mod是负数。
然后我不禁骂出了声。。。我特意乘1ll不让它溢出啊。。。。
然后去了。
mod是正的。A了
仔细研究一下,首先(1<<31)是int型左移31位,一定会溢出,理论上是-2147483648。100……00(2)(31位)
然后当溢出时电脑没法分清那个是符号位哪个是最高位,当你减1的时候就变成了,0111……1(2),即:符号位在做减法的时候像平常位一样借位变0了。然后就正了,也就是下一个为什么对了。
然鹅,对于上面那个就没那么幸运了,符号位设在了63位,然后电脑就愉快的帮你分清了。然后我就死了。
其实应该这么写
就不写单个题解了,Dybala都AK了。。。
我只有30分,
我辣鸡。
1.垃圾在不细心。
2.垃圾在调不出来代码。
3.垃圾在对CRT费马欧拉掌握不熟。
4.还有不会打表看规律。