当前位置:首页 > C++知识 > 正文内容

【题解】盈亏问题

亿万年的星光12个月前 (07-16)C++知识1227

【题目描述】

一群人团购一件物品:

如果每人出 a元,所付总金额比物价多出了x 元;

如果每人少出 1元,也就是每人出a-1元,所付总金额比物价少了y元。

给定 a,x,y求参与团购的人数及该物品的价格。

【输入描述】

单独一行:三个整数:a,x及y

【输出描述】

单独一行:两个整数。第一个整数表示参与的人数,第二个整数表示物品的价格,中间用一个空格分开。

【样例输入】

8 3 4

【样例输出】

7 53

【数据范围】

  • 1≤a≤1000

  • 1𝑥10001≤x≤1000

  • 1𝑦10001≤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;
}


扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

【题解】采药的最短路径

【题目描述】少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶。孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处。迷阵由M×N个方格组成,有的方格内有...

指针(二):指针与数组

1.指针与数组的关系    指向数组的指针变量称为数组指针变量。“数组是内存上一块连续的空间”。数组名就是这块连续空间的首地址。2.指针指向数组  &...

C++中的宏

一、预处理和编译器    首先,预编译器就是在编译器之前运行,换句话说,预编译器根据程序员的指示,决定实际要编译的内容。预编译器编译指令都以 # 开头。例如:1...

STL入门——容器1:vector (不定长度数组)

一、定义     vector是一个不定长度数组。不仅如此,它把一些常用操作“封装”在了 vector 类型内部。    ...

C++中的max和min函数(最大值,最小值)

1.头文件      最大值最小值函数所在头文件是#include<algorithm>2.用法#include<iostream> #incl...

【数论】均值不等式

【数论】均值不等式

均值不等式是高中常见的一个知识点,下面这篇文章做一下简单总结。1、其中a,b属于实数R,当且仅当a=b时,等号成立。这个也叫基本不等式2、其中a,b属于正实数,当且仅当a=b时,等号成立。3、其中a,...