Sum of Odd Integers

Sum of Odd Integers

题面翻译

题目描述

给定 n , k n,k n,k,求是否能用 k k k 个不同奇数的和来表示 n n n

输入格式

第一行一个数 t ( 1 ≤ t ≤ 1 0 5 ) t(1\leq t\leq 10^5) t(1t105)

之后 t t t 每行两个数 n , k ( 1 ≤ n , k ≤ 1 0 7 ) n,k(1\leq n,k \leq 10^7) n,k(1n,k107)

输出格式

如果有解,输出"YES",否则输出"NO"。

题目描述

You are given two integers $ n $ and $ k $ . Your task is to find if $ n $ can be represented as a sum of $ k $ distinct positive odd (not divisible by $ 2 $ ) integers or not.

You have to answer $ t $ independent test cases.

输入格式

The first line of the input contains one integer $ t $ ( $ 1 \le t \le 10^5 $ ) — the number of test cases.

The next $ t $ lines describe test cases. The only line of the test case contains two integers $ n $ and $ k $ ( $ 1 \le n, k \le 10^7 $ ).

输出格式

For each test case, print the answer — “YES” (without quotes) if $ n $ can be represented as a sum of $ k $ distinct positive odd (not divisible by $ 2 $ ) integers and “NO” otherwise.

样例 #1

样例输入 #1

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

样例输出 #1

YES
YES
NO
YES
YES
NO

提示

In the first test case, you can represent $ 3 $ as $ 3 $ .

In the second test case, the only way to represent $ 4 $ is $ 1+3 $ .

In the third test case, you cannot represent $ 10 $ as the sum of three distinct positive odd integers.

In the fourth test case, you can represent $ 10 $ as $ 3+7 $ , for example.

In the fifth test case, you can represent $ 16 $ as $ 1+3+5+7 $ .

In the sixth test case, you cannot represent $ 16 $ as the sum of five distinct positive odd integers.

#include<stdio.h>
int main(void)
{
	int t;
	scanf("%d", &t);
	while (t--)
	{
		long long int n, k;
		scanf("%lld %lld", &n, &k);
		if ((n - k) % 2 == 0&& n>=k*k)
			printf("YES\n");
		else
			printf("NO\n");
	}
	return 0;
}

10的7次方乘10的七次方即使是long int也有可能爆
不要随意选定数据类型
思路:将奇数看作1加n个2(包括0个2),按照题意转换条件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值