2018CCPC吉林赛区(重现赛)
A The Fool 签到题 数论分块 数学题
B The World 时间处理问题 字符串
C Justice 思维题
E The Tower 计算几何 几何题
I Strength 贪心+田忌赛马 博弈论
A The Fool
数论分块(队友写的,所以没有解析)
# include <bits/stdc++.h>
using namespace std;
const int mod = 2;
int main(){
int t;
cin>>t;
int k = 0;
while(t--){
LL n;
cin>>n;
LL ans = 0;
for(LL l=1,r;l <= n; l = r + 1){
r = n / (n / l);
ans = (ans + (r - l + 1) * (n / l)) % mod;
}
printf("Case %d: ",++k);
if(ans) printf("odd\n");
else printf("even\n");
}
return 0;
}
B The World
这个其实是一个水题,但是有一个坑点,我当时也没注意到wa了一次,后面学长提醒才注意到就是am只的是凌晨12点到中午的11:59:59,而从下午的12点开始就是pm了,一直到晚上的11:59:59。上述也为一天的具体时间。
include <bits/stdc++.h>
using namespace std;
int main()
{
int T;
scanf("%d",&T);
for(int i=1;i<=T;i++){
int h;
string a;
string m;
string d;
string s1,s2;
cin>>h;
getchar();//独掉“:”
cin>>m;
cin>>a;
if(a=="PM"){//转化为二十四小时制
if(h!=12) h=h+12;//如果是12点的话,属于pm的只有中午12点,所以不要用转化,不太明白的可以看开头关于am,pm的解释
}
if(a=="AM"){//如果是属于am的12点就是夜里凌晨转化为0防止混淆
if(h==12) h=h-12;
}
cin>>s1;
cin>>s2;
int utc;
if(s1=="Beijing") utc=h-8;//将现在的时间转化为utc标准时间
if(s1=="Washington") utc=h+5;
if(s1=="London") utc=h;
if(s1=="Moscow") utc=h-3;
if(s2=="Beijing") h=utc+8;//将utc时间再转化为当前时间
if(s2=="Washington") h=utc-5;
if(s2=="London") h=utc;
if(s2=="Moscow") h=utc+3;
if(h<0){//判断是昨天,今天还是明天
h=h+24;
d="Yesterday";
}else if(h>=24){
h=h-24;
d="Tomorrow";
}else{
d="Today";
}
//判断是am还是pm,同时将时间转化为12小时制的
if(h>=12&&h<24){//pm的转化,注意特判12
if(h!=12) h=h-12;
a="PM";
}else if(h==0){//凌晨12点的特判
h=12;
a="AM";
}else{
a=