【题解】盈亏问题
【题目描述】
一群人团购一件物品:
如果每人出 a元,所付总金额比物价多出了x 元;
如果每人少出 1元,也就是每人出a-1元,所付总金额比物价少了y元。
给定 a,x,y求参与团购的人数及该物品的价格。
【输入描述】
单独一行:三个整数:
【输出描述】
单独一行:两个整数。第一个整数表示参与的人数,第二个整数表示物品的价格,中间用一个空格分开。
【样例输入】
8 3 4
【样例输出】
7 53
【数据范围】
1≤a≤1000
1≤x≤1000
1≤y≤1000
这个问题可以通过设定方程组求解来解决。设 n 为人数,p 为物品的价格。 根据题目描述: 如果每个人出 a 元,总金额为 n * a,比物品的价格多了 x 元,即 n * a = p + x。 如果每个人出 a-1 元,总金额为 n * (a - 1),比物品的价格少了 y 元,即 n * (a - 1) = p - y。 我们可以通过解这两个方程来求解 n 和 p。
#include <iostream>
using namespace std;
int main() {
int a, x, y;
cin >> a >> x >> y;
// 方程一: n * a = p + x
// 方程二: n * (a - 1) = p - y
// 通过消去法解方程组
// 设 p = n * a - x 代入第二个方程:
// n * (a - 1) = n * a - x - y
// 化简可得:
// n * (a - 1) = n * a - x - y
// n * a - n = n * a - x - y
// - n = - x - y
// n = x + y
int n = x + y;
int p = n * a - x;
cout << n << " " << p << endl;
return 0;
}方法二:直接用循环模拟
#include <iostream>
using namespace std;
int main() {
int a, x, y;
cin >> a >> x >> y;
int n,p;
// 方程一: n * a = p + x
// 方程二: n * (a - 1) = p - y
for(n=1;;n++){
p=a*n-x;
if((a-1)*n==p-y){
cout << n << " " << p << endl;
return 0;
}
}
return 0;
}扫描二维码推送至手机访问。
版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。


