百僧分馍——《算法统宗》著名题目

前言

百僧分馍出自于我国明代著名数学家程大位所著的《算法统宗》,感兴趣的可以了解一下。

程大位icon-default.png?t=O83Ahttps://baike.baidu.com/item/%E7%A8%8B%E5%A4%A7%E4%BD%8D/685133

《算法统宗》 icon-default.png?t=O83Ahttps://baike.baidu.com/item/%E7%AE%97%E6%B3%95%E7%BB%9F%E5%AE%97?fromModule=lemma_search-box

原题

一百馒头一百僧,大僧三个更无争,小僧三人分一个,大小和尚各几丁?

这道题大意思大概是:有100个和尚分100只馒头,正好分完。如果大和尚一人分3只,小和尚3人分一只,试问大、小和尚各有几人?

 代码思路

这道题我们可以使用常用算法之一——模拟来做这道题。

双重for循环,看一下以下条件是否成立:i * 3 + j / 3 == 100 && i + j == 100,成立就可以输出答案了。如果有问题,就在评论区问我。

还有一种方法特别简单,想知道的私信!

代码实现

三种方法。

//第一种方法
#include <iostream>
using namespace std;
int main() {
	for (int i = 1; i <= 100; i++) //遍历100次 (i表示大和尚的数量) 
		for (int j = 1; j <= 100; j++) //遍历100次(j表示小和尚的数量) 
			if (i * 3 + j / 3 == 100 && i + j == 100) { //当找到答案时执行下列代码 
				cout << "大和尚有" << i << "个\n";
				cout << "小和尚有" << j << "个\n";
				return 0;
			}
}
//第二种方法
#include <iostream>
using namespace std;
int main() {
	const int n = 100; //定义常量 
	for (int i = 1; i <= n; i++) //i表示大和尚的数量 
		for (int j = 1; j <= n; j++) //j表示大和尚的数量
			if (i * 3 + j / 3 == n && i + j == n) {
				cout << "大和尚有" << i << "个\n";
				cout << "小和尚有" << j << "个\n";
				return 0;
			}
}
//第三种方法
#include <iostream>
using namespace std;
int main() {
	const int n = 100; //定义常量 
	for (int i = 1; i <= n; i++) //只需遍历一次 
		if (i * 3 + (n - i) / 3 == 100) {
			cout << "大和尚有" << i << "个\n";
			cout << "小和尚有" << n - i << "个\n";
			return 0;
		}
}

下一题:以碗知僧icon-default.png?t=O83Ahttps://blog.csdn.net/NOIP1ding_c/article/details/145050784?spm=1001.2014.3001.5502

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值