簡要題意:
多組數據,問能否把 分爲 個 不同的 正奇數之和。
盲猜數學結論題。
只要考慮兩個問題:
-
的大小是否足夠。
-
的奇偶性是否滿足。
對於第 條,最小的 個 不同的 正奇數之和爲 .(這都不知道,建議重學小學數學)
所以, 纔可能有解。
對於第 條,因爲 個正奇數與 的奇偶性相同,所以必須滿足:
這兩條同時滿足即有解,否則無解。
爲什麼呢?
考慮一種拆分:
即前 個正奇數加上另一個奇數。
如果 同時滿足上兩條,則顯然存在這樣的拆分,且 ,也不存在重複。
#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
inline ll read(){char ch=getchar();int f=1;while(ch<'0' || ch>'9') {if(ch=='-') f=-f; ch=getchar();}
ll x=0;while(ch>='0' && ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();return x*f;}
int main(){
ll T=read(),n,k; while(T--) {
n=read(),k=read();
if(n<k*k || (n-k)&1) puts("NO");
else puts("YES");
} //別忘了,k*k會爆int,開上 long long
return 0;
}