题目目录: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;
}