欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

codeforces A. Sum of Odd Integers

程序员文章站 2022-07-15 16:17:25
...

codeforces A. Sum of Odd Integers

题目

题意:

kk个奇数,问最后是否有可能和为nn

思路:

其实这道题只有两种是不可能,第一种是一个偶数一个奇数,因为两个奇数相加为偶数,那么在33个奇数下怎么能得出偶数,44个奇数也得不出奇数,第二种就是nn个奇数相加最小值大于nn。如果不属于这两种情况,那么肯定是可以的,因为这些奇数可以合成任一的数字,比如1818,我们可以分成1,3,5,91,3,5,9,在18一下,我们可以得到11~1616的任何数字,那么最后肯定可以得到1818的。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
#include <string>
#include <cmath>
#include <set>
#include <map>
#include <deque>
using namespace std;
typedef long long ll;
typedef vector<int> vec;
typedef pair<int, int> pii;
template <class T>
inline void read(T &ret) {
    char c;
    int sgn;
    if (c = getchar(), c == EOF) return ;
    while (c != '-' && (c < '0' || c > '9')) c = getchar();
    sgn = (c == '-') ? -1:1;
    ret = (c == '-') ? 0:(c - '0');
    while (c = getchar(), c >= '0' && c <= '9') ret = ret * 10 + (c - '0');
    ret *= sgn;
    return ;
}
inline void out(int x) {
    if (x > 9) out(x / 10);
    putchar(x % 10 + '0');
}
int main() {
    int n, k, t;
    read(t);
    while (t--) {
        read(n), read(k);
        if (n % 2 != k % 2) printf("NO\n");
        else if (1ll * k * k > n) printf("NO\n");
        else printf("YES\n");
    }
}

相关标签: codeforces