zoukankan      html  css  js  c++  java
  • Codeforce 1327A

    Example

    input

    6
    3 1
    4 2
    10 3
    10 2
    16 4
    16 5
    

    output

    YES
    YES
    NO
    YES
    YES
    NO
    

    解题思路:首先我们应该知道:偶数个奇数相加一定是偶数,奇数个奇数相加一定是奇数,所以对于给出的n和k,如果n是偶数,k是奇数,或者n是奇数,k是偶数,n和k不是同奇同偶,则n一定不可能由k个奇数相加得到。所以我们先判断n和k是否同为奇数(偶数),这是要考虑的第一点,第二点,k个奇数有一个最小值,如果k=4,则k个不同的奇数最小值为1+3+5+7=16,如果n的值<=16,n也不可能由k个奇数相加得到,k=1时候,最小值是1,k等于2时,最小值4,k等于3时,最小值9,通过观察可以发现,k的最小值就是k*k。所以判断一下n是否大于k的平方即可。ac代码:

    #include<bits/stdc++.h>
    using namespace std;
    int main() {
    	//freopen("in.txt", "r", stdin);
    	int t; cin >> t;
    	while (t--) {
    		long long n, k;
    		cin >> n >> k;
    		if ((n & 1) != (k & 1))
    			cout << "No" << endl;
    		else {
    			if (n >= k * k)cout << "Yes" << endl;
    			else cout << "No" << endl;
    		}
    	}
    }
    
  • 相关阅读:
    NET 事件与委托
    NET高级 REF OUT
    缓冲池
    NET高级 EQUAL相等
    装箱拆箱
    CTS、CLS、CLR
    结构体及引用类型
    NET高级-深拷贝浅拷贝
    密闭类 静态 类及扩展方法
    NET高级-索引器
  • 原文地址:https://www.cnblogs.com/RioTian/p/13501161.html
Copyright © 2011-2022 走看看