Codeforces Round #697 (Div. 3) B. New Year‘s Number

B. New Year's Number
Time limit per test:2 seconds
Memory limit per test:256 megabytes

Polycarp remembered the 2020-th year, and he is happy with the arrival of the new 2021-th year. To remember such a wonderful moment, Polycarp wants to represent the number n as the sum of a certain number of 2020 and a certain number of 2021.
For example, if:
n=4041, then the number n can be represented as the sum 2020+2021;
n=4042, then the number n can be represented as the sum 2021+2021;
n=8081, then the number n can be represented as the sum 2020+2020+2020+2021;
n=8079, then the number n cannot be represented as the sum of the numbers 2020 and 2021.
Help Polycarp to find out whether the number n can be represented as the sum of a certain number of numbers 2020 and a certain number of numbers 2021.
Input
The first line contains one integer t (1≤t≤104) — the number of test cases. Then t test cases follow.
Each test case contains one integer n (1≤n≤106) — the number that Polycarp wants to represent as the sum of the numbers 2020 and 2021.
Output
For each test case, output on a separate line:
“YES” if the number n is representable as the sum of a certain number of 2020 and a certain number of 2021;
“NO” otherwise.
You can output “YES” and “NO” in any case (for example, the strings yEs, yes, Yes and YES will be recognized as positive).

Example

Input:
5
1
4041
4042
8081
8079
Output:
NO
YES
YES
YES
NO

题目描述

输入一个数,判断它是否能由有限个2020和2021进行相加得到。

分析

由题意,设x跟y为2020跟2021的数量
可列 n = 2020x + 2021y
即 n = 2020*(x+y) + y
如果n能由有限个2020和2021进行相加得到,则求得的x跟y为>=0的整数
首先,先使n余2020得到y
然后利用上述式子求出x,用int类型接收,再最后相乘得看是否是n即可。(此步是用于判断求得的x是否是整数,不是整数的话最后相乘的结果就不是n)

AC代码

#include <iostream>
#include <cstdio>
using namespace std;
 
int main(void)
{
	int t;
	scanf("%d", &t);
	int n;
	while (t--)
	{
		scanf("%d", &n);
		int count2021 = n % 2020;
		int count2020 = (n - count2021) / 2020 - count2021;
		if (count2020 >= 0 && 2020 * count2020 + 2021 * count2021 == n) {
			puts("YES");
		}
		else puts("NO");
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小陌白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值