[C++] 1022 - 百のお金と百の鶏の問題 (完全版)

100元を使って、鶏、鶏、ひよこなどの鶏を100羽購入します。
雄鶏は1羽5元、雌鶏は1羽3元、ひよこは1羽1元です。
雄鶏、鶏、ひよこを何羽購入すればよいですか?

ここに画像の説明を挿入します

1. 問題を分析する

  1. 既知: 鶏 100 羽を買うのに合計 100 元が費やされます。雄鶏 1 羽は 5 元、鶏 1 羽は 3 元、ひよこ 3 羽は 1 元です。
  2. 不明: g 雄鶏、m 鶏、x ひよこ
  3. 関係: 5 g+3 m+x/3=100、g+m+x=100。

2. 変数を定義する

分析の既知および未知に基づいて、必要に応じて変数を定義します。

	//二、数据定义 
	int money=100,g=1,m=1,x=3;

3. データを入力します

なし。

4.データ計算

4.1 問題の範囲を決定する: 問題の要件に従って、試行する必要がある値の範囲を決定します。

お金: 100。
鶏の総数: 100 羽。
オンドリ: 最小 1、最大: (100-3-1)/5。
鶏: 最小 1、最大: 合計金額 - 購入した雄鶏の数 * 5 - 最小鶏数、つまり (金額 - 5 * g - 1)/3。

4.2 ループを使用して網羅的に列挙する: ループ構造 (for ループなど) を使用して、範囲内の各値を調べます。

g: 雄鶏の数。

while(g<=(100-3-1)/5){
    
    
		g++;
	}

4.3 数値を問題に持ち込んで試す: 現在の数値を問題に持ち込んで、問題の条件が満たされるかどうかを判断します。

m: 鶏の数。

鶏の数は多いものから少ないものまであります。

	//四、数据计算 
	//输出时,按公鸡数从少到多,母鸡数从多到少的顺序输出
	while(g<=(100-3-1)/5){
    
    
		//母鸡最多数量 
		m=(money-5*g-1)/3;
		while(m>1){
    
    
			x=(money-g*5-m*3)*3;
			if(g+m+x==100){
    
    
			}
			m--;	
		} 
		g++;
	}
	

4.4 条件を満たした場合、結果を出力するなどの操作を行います。現在の値が問題の条件を満たしている場合、その値を問題の解決策として出力したり、その他の操作を実行したりできます。

	//四、数据计算 
	//输出时,按公鸡数从少到多,母鸡数从多到少的顺序输出
	while(g<=(100-3-1)/5){
    
    
		//母鸡最多数量 
		m=(money-5*g-1)/3;
		while(m>1){
    
    
			x=(money-g*5-m*3)*3;
			if(g+m+x==100){
    
    
				//五、输出结果 
				cout<<g<<" "<<m<<" "<<x<<endl;	
			}
			m--;	
		} 
		g++;
	}
	

4.5 考えられるすべての解がなくなるまでループを続けます。

5. 結果の出力

#include<iostream>
using namespace std;
int main(){
    
    
	//一、分析问题
	//已知:共有100元,买100只鸡,公鸡5元1只,母鸡3元1只,小鸡1元3只
	//未知:公鸡g只,母鸡m只,小鸡x只 
	
	//二、数据定义 
	int money=100,g=1,m=1,x=3;
	//三、数据输入 
	//四、数据计算 
	//输出时,按公鸡数从少到多,母鸡数从多到少的顺序输出
	while(g<=(100-3-1)/5){
    
    
		//母鸡最多数量 
		m=(money-5*g-1)/3;
		while(m>1){
    
    
			x=(money-g*5-m*3)*3;
			if(g+m+x==100){
    
    
				//五、输出结果 
				cout<<g<<" "<<m<<" "<<x<<endl;	
			}
			m--;	
		} 
		g++;
	}
	return 0;	
}

おすすめ

転載: blog.csdn.net/qq_39180358/article/details/135337481