题意:给定两个整数n和k,你的任务是找出n是否可以表示为k个不同的正奇数(不能被2整除)整数的和
题解:前k个最小的奇数的和为sum=1+3+5+.......+2k-1=k*k;如果sum>n,不符合条件;所以如果要n能被k个不同的奇数的和表示需要满足sqrt(n)>k并且k和n同奇同偶
#include<iostream> #include<cmath> #include<cstdio> using namespace std; int main(){ int t; cin>>t; while(t--){ int n,k; cin>>n>>k; if(k<=sqrt(n)&&((n%2==0&&k%2==0)||(n%2!=0&&k%2!=0))){ cout<<"YES"<<endl; }else{ cout<<"NO"<<endl; } } return 0; }
原文:https://www.cnblogs.com/yy0826/p/13080654.html