前言:
目前各位老铁们对“csp题解2022”都比较珍视,大家都想要剖析一些“csp题解2022”的相关知识。那么小编也在网络上汇集了一些关于“csp题解2022””的相关资讯,希望兄弟们能喜欢,你们一起来学习一下吧!学习C++从娃娃抓起!记录下CSP-J备考学习过程中的题目,记录每一个瞬间。
附上汇总贴:历年CSP-J复赛真题解析 | 汇总_热爱编程的通信人的博客-CSDN博客
【题目描述】
给定一个正整数 k,有 k 次询问,每次给定三个正整数 ni,ei,di,求两个正整数 pi,qi,使 ni=pi×qi、ei×di=(pi−1)(qi−1)+1。
【输入】
第一行一个正整数 k,表示有 k 次询问。
接下来 k 行,第 i 行三个正整数 ni,di,ei。
【输出】
输出 k 行,每行两个正整数 pi,qi 表示答案。
为使输出统一,你应当保证 pi≤qi。
如果无解,请输出 NO。
【输入样例】
10770 77 5633 1 211545 1 499683 3 227858 3 257723 37 13572 26 11867 17 17829 3 263528 4 109
【输出样例】
2 385NONONO11 783 2412 286NONO6 88
【代码详解】
#include <bits/stdc++.h>#include <cmath>using namespace std;typedef long long LL;int k; //定义正整数kLL n, d, e; //定义n、d、eint main(){ cin >> k; //输入k while (k--) { //循环k次 cin >> n >> d >> e; //输入n、d、e LL m = n-e*d+2; //根据数学推导,计算m LL r = sqrt(m*m-4*n); //根据数学推导,计算m*m-4*n的平方根 if (r*r==m*m-4*n) { //因为p和q是正整数,所以这里判断是否为完全平方根 cout << (m-r)/2 << " " << (m+r)/2 << endl; //计算p和q } else { cout << "NO" << endl; //否则输出NO } } return 0;}
【运行结果】
10770 77 52 385633 1 211NO545 1 499NO683 3 227NO858 3 25711 78723 37 133 241572 26 112 286867 17 17NO829 3 263NO528 4 1096 88
标签: #csp题解2022 #计算机二级c语言题库及答案2022年