A自己写的T了……然后看了看别人的思路……惊了……
#include<iostream> using namespace std; int main() { cout<<"Karen"<<endl; return 0; }
orz 这里要用到异或的法则
1. a ⊕ a = 0
2. a ⊕ b = b ⊕ a
3. a ⊕b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c;
4. d = a ⊕ b ⊕ c 可以推出 a = d ⊕ b ⊕ c.
5. a ⊕ b ⊕ a = b.
6.若x是二进制数0101,y是二进制数1011;
则x⊕y=1110
只有在两个比较的位不同时其结果是1,否则结果为0
“两个输入相同时为0,不同则为1”
在本题中:
设xi^yj=z;
那么 xi^z=xi^yj^xi=yj,yj^z=yj^xi^yj=xi,xi与yj求异或值z,如果z在y[]中,那么xi^z=yj;如果z在x[]中,那yj^z=xi;
也就是一旦存在z属于这2n个数,那么对于xi/yj,必然存在z和yj/z和xi与其为一组(),即答案一定是偶数。
869B The Eternal Immortality 传送门
求阶乘b!/a!的最后一位数……如果b-a>=10,(a,b]肯定存在一个10的倍数,最后一位肯定是0,其他的情况就……直接乘
#include<iostream> typedef long long ll; using namespace std; ll a,b; int main() { ios::sync_with_stdio(false); while(cin>>a>>b) { int ans=1; if(b-a>=10) ans=0; else for(ll i=a+1;i<=b;i++) { ans=(i*ans)%10; } cout<<ans<<endl; } return 0; }