C++で指定された比率から各種コインの枚数を求めるプログラム
この問題では、合計金額(totalPrice)と、袋の中にある1ルピー硬貨・50パイサ硬貨・25パイサ硬貨の比率を表す4つの数値が与えられます。私たちの課題は、C++で指定された比率から各種コインの枚数を求めるプログラムを作成することです。
問題の概要
ここでは、袋の中の1ルピー硬貨、50パイサ硬貨、25パイサ硬貨を組み合わせて、与えられた合計金額になるようにします。
まず、具体例を使って問題を理解しましょう。
入力
TotalPrice = 225, 1Rs = 2, 50P = 3, 25P = 4
出力
1ルピー硬貨 = 100枚 50パイサ硬貨 = 150枚 25パイサ硬貨 = 200枚
説明
比率に基づいて、各硬貨が合計金額に占める価値を考えてみます。
1ルピー硬貨の価値: 2X 50パイサ硬貨の価値: 1.5X 25パイサ硬貨の価値: 1X
これらをすべて合計すると225になります。
2X + 1.5X + 1X = 225 4.5X = 225 → X = 225 / 4.5 = 50
したがって、各硬貨の価値と枚数は以下のようになります。
- 1ルピー硬貨の価値 = 100 → 100枚
- 50パイサ硬貨の価値 = 75 → 150枚
- 25パイサ硬貨の価値 = 50 → 200枚
解法アプローチ
上記の説明のとおり、まず各硬貨が合計金額にどれだけ寄与しているかを求め、その価値に基づいて各硬貨の枚数を計算します。
基準値Xが求まれば、各硬貨の枚数は比率を掛けた次の値になります。
- 1ルピー硬貨:2X 枚
- 50パイサ硬貨:3X 枚
- 25パイサ硬貨:4X 枚
この解法の動作を示すプログラムは以下のとおりです。
実装例
#include <iostream>
using namespace std;
int CalcCoinValue(int totalPrice, int re1, int p50, int p25) {
float val1Coin = (re1 * 1.0), val50pCoin = (p50/2.0), val25pCoin =(p25/4.0);
int result = totalPrice / (val1Coin + val50pCoin + val25pCoin);
return result;
}
int main() {
int totalPrice = 225;
int re1 = 2, p50 = 3, p25 = 4;
int coinValue = CalcCoinValue(totalPrice, re1, p50, p25);
cout<<"Count of 1 rupee coin = " <<(coinValue * re1)<<endl;
cout<<"Count of 50 paise coin = " <<(coinValue * p50)<<endl;
cout<<"Count of 25 paise coin = " <<(coinValue * p25)<<endl;
return 0;
}出力
Count of 1 rupee coin = 100 Count of 50 paise coin = 150 Count of 25 paise coin = 200
-
C++で単調増加数列から最大の集計値を求める方法【DFS全探索】
問題の概要 2つの整数 n と m、さらに4つの整数 {ai, bi, ci, di} を含む k 個のタプルが与えられているとします。配列 a、b、c、d の4つが入力として渡され、a[i] は i 番目のタプルの a の値を表します。 ここで、n 個の正の整数からなる狭義単調増加の数列 dp(1 ≤ dp[1] < dp[2] < … < dp[n] ≤ m)を考えます。「集計(tally)」という指標を次のように定義します。 集計 = 条件 dp[b[i]] − dp[a[i]] = c[i] を満たすすべての添字 i における d[i] の総和 該当する i がひとつ
-
C++で与えられた点から作成できる四角形の数を求める方法
四角形とは? 四角形(クアドララテラル)とは、ユークリッド平面上で4つの頂点と4つの辺を持つ多角形のことを指します。「4-gon」という呼び方もあり、正方形や長方形なども四角形の一種に含まれます。 本記事では、与えられた点から作成できる四角形の数を求める手法について解説します。この問題では、直交座標系(XY平面)上に与えられた4つの点 (x, y) を用いて、いくつの四角形を構成できるかを求めます。まず、具体的な入力例と出力例を見てみましょう。 入力 : A( -2, 8 ), B( -2, 0 ), C( 6, -1 ), D( 0, 8 ) 出力 : 1 説明 : 作成できる四角形は1つだ