题目目录:E A K
E题 Rise of Shadows
题目大意:输入一个年份,判断它是否是素数的同时是闰年。
思路:闰年必然有个因数是4,所以一个数不可能同时是闰年又是素数。对于所有的输出全输no即可
#include <bits/stdc++.h> using namespace std; int main(){ int x,t; cin>>t; while(t--){ cin>>x; cout<<"no"<<endl; } return 0; }
A题 Ares, Toilet Ares
题目大意:比赛中有n道题,在比赛中出题人总共改变了n-m道问题,并且增强了未改变的m道问题最简单的数据范围a。Toliet Ares可以做出增强数据a的题目,但是他们并不想做最难的一道。他们有k次机会去厕所,每次去厕所可以获得x行关于k的代码,每次代码有p的概率是错的。获得代码的总长度等于能正确解决问题的代码长度。输出Toilet Ares能解决的问题数。
思路:Toliet Ares能解决的问题数就是a道题加上他们能做出最难的题的概率,最后输出答案对mod求逆元后的结果即可。难点主要在于给出的数据可能很大,在每个相乘可能超过1e9的情况下,都要对其进行取模操作。
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll n,m,k,a,l; const int mod=4933; ll kpow(ll a,ll b){ if(b==0) return 1; if(b%2==1) return a*kpow(a,b-1)%mod; else { ll t=kpow(a,b/2); return t*t%mod; } } ll gcd(ll a,ll b){ if(b==0) return a; else return gcd(b,a%b); } ll x,y,z; ll p=1,ans=0; int main(){ cin>>n>>m>>k>>a>>l; for(int i=1;i<=k;i++){ cin>>x>>y>>z ; if(y==0||x==0) continue; y=z-y; if(y==0){ p=0; break; } p=(p%mod*(y%mod)*(kpow(z,mod-2)%mod))%mod; } ans=(a%mod+p)%mod; cout<<ans<<endl; }
K题 Yet Another Problem About Pi
题目大意:给出长度为π的路线以及网格的长和宽,要找出多能经过的区域个数。在一个格点上算经过了4个区域。
思路:在网格上,走短边可以增加两个区域,走斜边可以增加三个区域。在每一个格点上都是这两种走法。走法大体分为主体部分直走和斜走,然后再考虑多余部分在两头是否符合另一种走法。
#include<bits/stdc++.h> using namespace std; double w,d,m,s,pi=acos(-1); int t,ans; int main(){ cin>>t; while(t--){ ans=0; scanf("%lf %lf",&w,&d); m=min(w,d);//短边长 s=sqrt(w*w+d*d);//对角线长 for(int i=0;i<=2;i++){ if(pi-i*m>0) ans=max(ans,(int)((pi-i*m)/s)*3+2*i);//先走对角线 if(pi-i*s>0) ans=max(ans,(int)((pi-i*s)/m)*2+3*i);//先走短边 } cout<<ans+4<<endl; } return 0; }