题目目录: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;
}
京公网安备 11010502036488号