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;
    		}
    	}
    }
    
  • 相关阅读:
    C#-Linq-SelectMany
    C#-Linq-SelectMany
    DI是实现面向切面和面向抽象的前提
    java流程控制之Scanner(2)
    java流程控制之Scanner(1)
    java运算符之三目运算符
    java运算符之位运算
    java运算符之与或非
    java运算符之加减乘除
    java基础语法
  • 原文地址:https://www.cnblogs.com/RioTian/p/13501161.html
Copyright © 2011-2022 走看看