当前位置:首页 > C++目录 > 正文内容

【题解】盈亏问题

亿万年的星光2年前 (2024-07-16)C++目录1875

【题目描述】

一群人团购一件物品:

如果每人出 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;
}


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

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

    分享给朋友:

    相关文章

    一笔画问题

    【题目描述】如果一个图存在一笔画,则一笔画的路径叫做欧拉路,如果最后又回到起点,那这个路径叫做欧拉回路。根据一笔画的两个定理,如果寻找欧拉回路,对任意一个点执行深度优先遍历;找欧拉路,则对一个奇点执行...

    数组的不确定长度输入

    0.前言我们在学习数组的时候一般都会告诉你数组的长度,然后for循环去遍历。但是有一类问题是没有n的,也就是没有告诉长度的。1.方法第一种:(数组)#include<iostream>...

    【数论】杨辉三角

    【数论】杨辉三角

    一、起源 杨辉三角,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。帕斯卡(1623----1662)是在1654年发现这一规律的,比杨辉要迟393年,比贾宪迟600年。杨辉三角...

    2021CSP-J/S全国晋级二轮分数线公布

    普及组CSP-J序号省市CSP-J人数CSP-J晋级晋级比例最高分晋级最低分1甘肃13413399.25%86152宁夏10310198.06%65243天津46345197.41%8615.54云南...

    【入门篇】C++ 中变量的简单使用

    【入门篇】C++ 中变量的简单使用

    1.什么是变量”变量“通俗来讲就是能变的量。在程序设计中,变量是一个个不同类型的盒子,当盒子里装了苹果时,盒子就代表苹果,当然,我们需要给一个个盒子起不同的名字。像下面的图片一样,一个盒子,给他取一个...

    【算法】前缀和与差分(3)二维数组前缀和

    【算法】前缀和与差分(3)二维数组前缀和

    0.前言前面的一篇文章,介绍了一维数组的前缀和,这篇文章中,介绍一下二维数组的前缀和1.定义二维数组的前缀和就是按照二维数组求和。公式如下:那二维前缀和中一个f[i][j]表示的意思就是以(1,1)为...