C++ 算法题:8443 无限回转 - 枚举解法
C++ 算法题:8443 无限回转 - 枚举解法
本题要求判断是否存在正整数对 (x, y),满足 x * y = S 且 2 * (x + y) = P,并输出最小 x 的整数对。使用枚举法,遍历所有可能的 x 值,并计算相应的 y 值,判断是否满足条件。
题目描述
给定两个整数 S,P,问是否有正整数对 (x,y),使得 x×y=S 且 2×(x+y)=P
如果有,则输出 Yes,并在第二行输出满足 x 最小的两个整数,否则则输出 No
输入格式
第一行两个整数 S,P,中间用空格隔开
输出格式
第一行一个字符串 Yes 或 No ,表示是否有满足条件的整数对
如果第一行为 Yes ,则在第二行输出 x 最小的这整数对,中间用空格隔开。如果第一行为 No,则没有第二行内容:
代码实现
#include <iostream>
using namespace std;
int main() {
int N, S, P;
cin >> N >> S >> P;
bool found = false;
int x = 1, y = S;
while (x <= y) {
if (x * y == S && 2 * (x + y) == P) {
found = true;
break;
}
x++;
y = S / x;
}
if (found) {
cout << "Yes" << endl;
cout << x << " " << y << endl;
} else {
cout << "No" << endl;
}
return 0;
}
原文地址: http://www.cveoy.top/t/topic/qeIJ 著作权归作者所有。请勿转载和采集!