Robin Hood and the Major Oak
题目链接:
https://codeforces.com/contest/2014/problem/B

题解:
- 因为树叶的寿命为k;所以在第n年的时候前n-k年的树叶都没了,就从n-k开始算就行,但要注意,如果k>n时,就得把每年都算上去了,不能直接用n-k;所以需要添加一个判断条件。
- 第二个方面就是判断是否为偶数,直接用i^i连longlong都保不住你,所以采用求余替换(毕竟它只要求判断奇偶);再按照奇奇得偶,奇偶为奇,偶偶是偶的运算法则,将所需年份历遍就行,这里我还判断了第n年是奇还是偶,看起来会清晰些。
代码
#include<iostream>
#include<algorithm>
#include<cmath>
#include<string>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int n, k;
cin >> n >> k;
int m = 0;
int s;
if (n - k >= 0)
s = k-1;
else
s = 0;
if (n % 2 == 0) {
if (s % 4 == 0||s%4==3)
cout << "YES" << endl;
else
cout << "NO" << endl;
}
else {
if (s % 4 == 0||s%4==1)
cout << "NO" << endl;
else
cout << "YES" << endl;
}
}
}