1 条题解
-
0
自动搬运
来自洛谷,原作者为

cff_0102
& aqua_qaq | 团子群 185800038 | 如果我死了说明我 AFO 了搬运于
2025-08-24 22:51:48,当前版本为作者最后更新于2023-10-23 16:22:00,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
因为 ,所以 。 和 明显同号,所以 要么得是奇数,要么能被 整除,否则它就不能被分成 。
当 是奇数,考虑构造 。两式相加,得到 ,两式相减,得到 。所以当 是奇数,其中一个答案就是 。但是,题面又规定 必须是正整数,所以 为 时无解,需要特判。
当 能被 整除,先抛开 的情况,考虑构造 。同样的方法,计算出 $x=\frac{\frac{n}{2}+2}{2}=\frac{n}{4}+1,y=\frac{\frac{n}{2}-2}{2}=\frac{n}{4}-1$。因为 得是正整数,所以 时无解。而当 时,只需要 即可,所以此时输出两个相等的数就行了。
综上,可以先判断 是否为 ,为 时输出两个相同的数;然后判断 是否是 或 ,如果是则无解;接下来判断 是否是不能被 整除的偶数,是则无解;最后判断 是奇数还是偶数,然后输出相应的 的解。
#include<bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(false); long long n;cin>>n; if(n==0)cout<<"Yes\n114514 114514",exit(0);//n 为 0 的情况 if(n==1||n==4)cout<<"No",exit(0);//n 为 1 或 4 的特殊情况 if(n%4==2)cout<<"No",exit(0);//n 不是奇数也不是 4 的倍数的情况 if(n%2)cout<<"Yes\n"<<(n+1)/2<<" "<<(n-1)/2;//n 是奇数的情况 else cout<<"Yes\n"<<n/4+1<<" "<<n/4-1;//n 是 4 的倍数的情况 return 0; }
- 1
信息
- ID
- 9347
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者