JerryC对数字痴迷到了一种非正常的境界。每天JerryC都有喜欢的一些数字。第 i i i 天JerryC就喜欢 A i − B i A_i-B_i Ai−Bi中的数字。但是他觉得这样并不是很有趣,于是他就定义了一个函数
f ( i ) = i ∗ ∑ j = 1 i ( i m o d j ) f(i)=i*\sum^{i}_{j=1}(i\ mod\ j) f(i)=i∗j=1∑i(i mod j)
但是JerryC还是觉得不够有趣,于是她觉得只有满足
∑ i = A B f ( i ) \sum^{B}_{i=A}f(i) i=A∑Bf(i)
为奇数的一天才是她特别高兴的一天。
现在告诉你最近 T T T天JerryC喜欢的数的区间,请你猜猜她每一天会不会特别高兴。
解释:
第一个式子就是表示 f ( i ) f(i) f(i) 等于 i i i 乘以 i i i 的约数个数。
第二个式子就是求出 [ A , B ] [A, B] [A,B] 区间内所有的 f ( i ) f(i) f(i) 的和。
输入格式:
第 1 1 1行一个整数 T T T表示有多少天。
第 2 − ( T + 1 ) 2-(T+1) 2−(T+1)行两个非负整数 A i , B i A_i,\ B_i Ai, Bi表示每天JerryC喜欢的数的区间。
T T T行。每行为" Y e s Yes Yes“或” N o No No",表示第 i i i 天是不是JerryC特别高兴的一天。
3 3 3
1 10 1\ 10 1 10
11 15 11\ 15 11 15
5 12 5\ 12 5 12
#####输出样例:
N o No No
N o No No
Y e s Yes Yes
0 < = T < = 1 0 6 , 1 < = A i < = B i < = 1 0 18 0<=T<=10^6,\ 1<=A_i<=B_i<=10^{18} 0<=T<=106, 1<=Ai<=Bi<=1018
我们发现,只有 f ( c 2 ) , c f(c^2),\ c f(c2), c是奇数的情况才能对答案产生贡献。设 c = ⌈ a ⌉ , d = b c=\lceil\sqrt a\rceil,\ d=\sqrt b c=⌈a ⌉, d=b 。
对于区间 [ a , b ] [a,b] [a,b],只有 [ c , d ] [c,d] [c,d]区间长度中的奇数对答案有贡献。我们求出 [ c , d ] [c,d] [c,d]区间长度便可以求出答案。
#include
#include
#include
#include
#define reg register
typedef long long ll;
int n,ans;
ll a,b;
ll c,d;
//读入优化
inline ll read(){
ll x=0;char c;
do c=getchar(); while(c<'0'||c>'9');
while(c>='0'&&c<='9')
x=x*10+c-48,c=getchar();
return x;
}
int main(){
scanf("%d",&n);
for(reg int i=1;i<=n;++i){
a=read(),b=read();
c=ceil(sqrt(a)),d=sqrt(b);
if(a==b)//特判
{
printf(c*c==a&&(c&1)?"Yes\n":"No\n");
continue;
}
//如果c是偶数,他对答案不产生贡献
if(!(c&1)) c++;
printf(((d-c)/2+1)&1?"Yes\n":"No\n");
}
}