CF1184A1 题解

注:本文为洛谷用户 zhangsenhao6728(也就是我)的题解,已提交成功。

思路讲解

由于要求 x x x 最小,所以只用考虑 x x x,而 y y y 可以被求出来。

首先考虑 x = 0 x=0 x=0 的情况,带入方程: r = 0 2 + 2 × 0 × y + 0 + 1 r=0^2+2\times0\times y+0+1 r=02+2×0×y+0+1

这时 r = 1 r=1 r=1,所以 r = 1 r=1 r=1 时, ( x , y ) = ( 0 , n ) (x,y)=(0,n) (x,y)=(0,n) 了,吗?

并不是,因为在这里 y y y 是不固定的,所以也算无解。

然后考虑 x = 1 x=1 x=1,带入方程 r = 1 2 + 2 × 1 × y + 1 + 1 r=1^2+2\times1\times y+1+1 r=12+2×1×y+1+1,这时 y y y 就是固定的了,所以只用考虑 x = 1 x=1 x=1

然后再来看无解情况,因为 r = 1 2 + 2 × 1 × y + 1 + 1 r=1^2+2\times1\times y+1+1 r=12+2×1×y+1+1,所以 r − 1 2 − 1 − 1 = 2 × 1 × y r-1^2-1-1=2\times1\times y r1211=2×1×y,这时的 2 × 1 × y 2\times1\times y 2×1×y 必须为偶数,且必须大于等于 2 2 2,最终就是 r r r 必须为奇数,且 r − 1 2 − 1 − 1 ≥ 2 r-1^2-1-1\ge2 r12112

AC 代码

#include<bits/stdc++.h>
using namespace std;
int main(){
	long long q;
	cin>>q;
	if(q%2==1&&(q-1*1-1-1)>=2){//化简为 q%2&&q>=5 
		cout<<"1 "<<(q-1*1-1-1)/1/2;//化简为 cout<<"1 "<<(q-3)/2; 
	}else{
		cout<<"NO";
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值