纯娱乐,就第四题值得一看。
A 我有一款游戏
code:
#include <iostream>
#include <cstdio>
using namespace std;int main(){cout<<"原神启动";return 0;
}
B 除夜
#include <iostream>
#include <cstdio>
using namespace std;int main(){cout<<"除夕快乐万事如意";return 0;
}
C 咏兰
出题人的名字。。。
code:
#include <iostream>
#include <cstdio>
using namespace std;int main(){cout<<"神崎兰子";return 0;
}
D Kevin的新春礼物
思路:
这个有点意思。
首先明确一下0和任何数的最小公倍数都是0。
所以只会出现三种情况:
- 0和0,这时成立
- 0和非零数:假设 a i a_i ai 是非零数,那么 l c m ( a i , a j ) = 0 ≠ a i ⊕ a j = a i lcm( a_i,a_j)=0\not=a_i \oplus a_j=a_i lcm(ai,aj)=0=ai⊕aj=ai ,这种情况一定不成立
- 非零数和非零数:假设 a i ≥ a j a_i\ge a_j ai≥aj
- 如果 a i a_i ai 和 a j a_j aj 是倍数关系,那么 l c m ( a i , a j ) = a i ≠ a i ⊕ a j lcm( a_i,a_j)=a_i\not=a_i \oplus a_j lcm(ai,aj)=ai=ai⊕aj (因为 a j a_j aj 非零, a i a_i ai 异或值后肯定不可能保持原值,否则 a j a_j aj 就应该是0)
- 如果 a i a_i ai 和 a j a_j aj 不是倍数关系, l c m ( a i , a j ) ≥ 2 ∗ a i lcm( a_i,a_j) \ge 2*a_i lcm(ai,aj)≥2∗ai(不是倍数关系那肯定 a j a_j aj 有一个因数 a i a_i ai 没有,这个因数肯定大于等于2)。 a i ⊕ a j < 2 ∗ a i a_i \oplus a_j\lt 2*a_i ai⊕aj<2∗ai(可以看二进制, 2 ∗ a i 2*a_i 2∗ai 相当于 a i a_i ai 向左移动一位,前者比后者多一位,而无论怎么异或都不可能多一位出来,所以前者肯定大。或者可以这样想: a i ⊕ a j ≤ a i ∣ a j ≤ a i + a j ≤ 2 ∗ a i a_i \oplus a_j\le a_i |\ a_j \le a_i+a_j \le 2*a_i ai⊕aj≤ai∣ aj≤ai+aj≤2∗ai,异或结果一定小于或,或就是不进位加法,一定小于加法。而 a i = a j a_i=a_j ai=aj 时一定不成立,所以最后一个不等式的不等号一定不取等,所以一定小于)。
所以经过讨论发现只有0与0之间可以产生解,所以记录一下0的个数,答案就是0的个数的平方
long年记得开long long
code:
#include <iostream>
#include <cstdio>
using namespace std;int n,cnt;int main(){cin>>n;for(int i=1,t;i<=n;i++){cin>>t;if(t==0)cnt++;}cout<<1ll*cnt*cnt;return 0;
}
E 今晚是?
思路:
先说答案吧,是engage
至于为啥,我给出一个猜想:
题目是“楔形匣格”,拼音为“xiexingxiage”,然后根据题目名称,因为今晚是除夕(xi),所以除去“xi”,得到“engage”。
code:
#include <iostream>
#include <cstdio>
using namespace std;int main(){cout<<"engage";return 0;
}