的确扛过了联赛,然后貌似也做好了心理准备。
但是这。。。
再加上联赛的先天劣势。。。
先不用说翻盘,好歹省选跟别人追平,才有资格谈翻盘吧?
(然而其实就算追平了也没资格,还差十几分)
省选这个难度,追十几分。。。
最近烦心的事是真的多。。。扛过这一段,也许一切都会好起来吧。。。
省选模拟4个小时,并没有想象中那么漫长。
难度预估全错:T2<T1<T3。与现在所认为的难度顺序,只是大于号全部想成了小于号。。。
然后自然,时间分配就全乱了。
看到T3树论?还放在T3的位置上?啥还NPC了?大神题不敢做,然后就丢掉了唯一一个可能想出来的题。
坐在我右边的三个大神都切了我给我这一排丢人了2333
然后就一直在找T1和T2的规律。
刚开始T1还没看到保证P是质数白YY了半天。
后来在想的时候,想到指数肯定不能直接算,所以应该要用原根。然后想了一会脑子里萌生了一个想法:
不是所有的质数都有原根!
然后我就歇比了我也不知道我是怎么想的反正这个“灵光一现”就帮助T1把我切了。
T2显然是找不出来规律的,但是我花费了大量的时间。。。然后写的搜索懒得打剪枝就丢了10分。
懒得打。。。?其实我算了一下复杂度,差不多是对了就扔了,,然而并没有发现无良玩意有1000组测试数据。。。
过了一会离考试结束还有20分钟发现T1的20分暴力貌似会TLE0,急忙修改,改的时候灵感突现顺手写了个40分的不会证算法。
发现这个很适合打表,但是还有十几分钟。。?
最后就拿到了这个啥也不是的成绩。
希望明天不要这么蠢了。。。关键是要静下心来。。。
题是真的难,而且部分分的确没什么区分度(基本所有人都想的出来而且分值小),所以还是要冲着正解去不然3道题加起来才100分玩个啥啊。。。
T1:天空碎片
题意:求$1<=n,m<=P(P-1)$满足$n^m \equiv m^n (mod \ P)$。数据范围:$P \le 10^{12} $。答案对给定模数取模。100组测试数据。
一看到题目里那个P(P-1)就知道事情一定不简单。对于一个幂,底数可以对p取模,指数可以对(p-1)取模。
所以P(P-1)就会刚好取遍每一个底数/指数值一次,我们只要统计这样的值对P取模后有多少种放进桶里,平方后就是对答案的贡献。
1 #include<cstdio> 2 #define int long long 3 int mod,x,buc[1111]; 4 main(){ 5 int t,ans; 6 scanf("%lld%lld",&t,&mod); 7 while(t--){ans=0; 8 scanf("%lld",&x); 9 for(int i=0,w=1;w=1,i<x;++i)for(int j=0;j<x-1;++j,w=w*i%x)buc[w]++; 10 buc[0]++;buc[1]--; 11 for(int i=0;i<x;++i)ans+=buc[i]*buc[i]%mod,buc[i]=0; 12 printf("%lld\n",ans%mod); 13 } 14 }