4.盈亏问题

本文介绍了《九章算术》中的一道盈亏问题,并提出了现代解法。问题涉及一群人购买物品,不同支付方式下出现盈余或短缺。文章给出了数据范围,并提供了两种解决方案:数学公式推导法和枚举算法,适用于青少年学习算法与人工智能。
摘要由CSDN通过智能技术生成
上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。icon-default.png?t=N7T8https://www.iai.sh.cn/problem/79
题目背景

成书于汉代的《九章算术》是我国古代的一本数学专著。在其中一个章节里,讨论了一个盈亏问题:

今有(人)买(物),
(每)人出八(钱)盈余三(钱),
(每)人出七(钱)不足四(钱),
问人数、物价各几何?

大意是说,一群人组团买一件物品,若每人出 88 元,则比物价多了 33 元;若每人出 77 元,则比物价少了 44 元,求物价及参与的人数。

《九章算术》给出了优美的解法,我们现在需要解决更一般性的盈亏问题。

题目描述

一群人团购一件物品:

  • 如果每人出 𝑎a 元,所付总金额比物价多出了 𝑥x 元;
  • 如果每人少出 11 元,也就是每人出 𝑎−1a−1 元,所付总金额比物价少了 𝑦y 元。

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

输入格式
  • 单独一行:三个整数:𝑎,𝑥a,x 及 𝑦y。
输出格式
  • 单独一行:两个整数。第一个整数表示参与的人数,第二个整数表示物品的价格,中间用一个空格分开。
数据范围
  • 1≤𝑎≤10001≤a≤1000
  • 1≤𝑥≤10001≤x≤1000
  • 1≤𝑦≤10001≤y≤1000
>>>>>>分割线>>>>>>>>>>>>>分割线>>>>>>>>>>>>>分割线>>>>>>>>>>>>>分割线>>>>>>>

思路

方案1:数学公式推导法

#include<iostream>
using namespace std;
int main(){
	int a,x,y;
	cin>>a>>x>>y;
	cout<<x+y<<" "<<(x+y)*a-x;
	return 0;
}

方案2:枚举算法

#include<bits/stdc++.h>
using namespace std;
int a,x,y;
int n,p;
int main(){ 
	cin>>a>>x>>y;
	for(n=1;;n++){
		p = a*n-x;
		if(p-y==(a-1)*n){
			cout<<n<<" "<<p<<endl;
			break;
		}
	}
	return 0; 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子龙烜

坦克大战系列,手把手带你实现

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值