2019 GDUT 新生 专题Ⅰ L题

L - 二分??? CodeForces - 1260B

题目链接
题目大意是给你两个整数a和b,(0≤a,b≤1e9),,进行操作,在每次操作中,您应该选择任何正整数x并设置a=a−x,b=b−2x或a=a−2x,b=b−x。请注意,您可以在不同的操作中选择不同的x值。
可以推出一个方程组 x+2y=a,2x+y=b。得x=(2b-a)/3,y=(2a-b)/3,且3(x+y)为整数,x和y也必须大于等于0.

代码

#include <cstdio>
int main(){
	int t,a,b;
	scanf("%d",&t);
	while(t--){
		scanf("%d%d",&a,&b);
		double x=(2.0*b-a)/3,y=(2.0*a-b)/3;
		if((int)x==x&&(int)y==y&&x>=0&&y>=0) printf("YES\n");
		else printf("NO\n");
	}
	return 0;
}
发布了32 篇原创文章 · 获赞 0 · 访问量 648

猜你喜欢

转载自blog.csdn.net/weixin_45794203/article/details/103964461