前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【题解】[CSP-J 2022] 解密

【题解】[CSP-J 2022] 解密

作者头像
fishhh
发布2022-11-24 16:44:21
1.1K0
发布2022-11-24 16:44:21
举报
文章被收录于专栏:OI算法学习笔记

[CSP-J 2022] 解密

样例 #1

样例输入 #1

代码语言:javascript
复制
10
770 77 5
633 1 211
545 1 499
683 3 227
858 3 257
723 37 13
572 26 11
867 17 17
829 3 263
528 4 109

样例输出 #1

代码语言:javascript
复制
2 385
NO
NO
NO
11 78
3 241
2 286
NO
NO
6 88

提示

附件

【样例 #2】

见附件中的 decode/decode2.indecode/decode2.ans

【样例 #3】

见附件中的 decode/decode3.indecode/decode3.ans

【样例 #4】

见附件中的 decode/decode4.indecode/decode4.ans

【数据范围】

题目分析

代码实现

代码语言:javascript
复制
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
typedef long long ll;
ll n,d,e;
//p^2 -(n-e*d+2)p+n = 0
bool chk(ll num){//判断num是否时完全平方数
	ll t=ll(sqrt(num));
	return t*t==num;
}
int main(){
	int k;
	cin>>k;
	while(k--){
		cin>>n>>d>>e;
		ll b=e*d-n-2;
		ll a=1,c=n;
		if(b*b<4*a*c){
			cout<<"NO"<<endl;
		}else{
			ll t=b*b-4*a*c;
			bool f=0;
			if(chk(t)&&(ll(-b+sqrt(t))%(2*a)==0)){
				ll p=(-b-sqrt(t))/(2*a);
				ll q=n/p;
				if(p>=1){
					f=1;
					cout<<p<<" "<<q<<endl;
				}
			}
			if(!f) cout<<"NO"<<endl;
		}
	}
	return 0;
}

Q.E.D.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • [CSP-J 2022] 解密
    • 样例 #1
      • 样例输入 #1
      • 样例输出 #1
    • 提示
      • 题目分析
        • 代码实现
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档