C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++を使用してすべての質問を配布するために必要なメールの最小数。


問題の説明

テストでN個の質問があり、クラスでK人の生徒がいるとします。 K人の生徒のうち、N人の生徒がそれぞれ1つの質問を覚えました。メールには最大で約X個の質問を含めることができます。

クラス全体がすべての質問について知ることができるように、必要なメールの最小数を見つけます

N =3、K =3、X =1の場合、6通のメールを送信する必要があります-

  • 生徒1が生徒2と生徒3に質問を送信します(2通のメール)
  • 学生2と学生3もそうなので、メールの総数=2 * 3 =6

アルゴリズム

最終的な答えは、次の式を使用して計算できます-

ceil(N/X) * (K-N) + (( ceil((N-1)/X)) * (N-1)) + (N-1)

#include <iostream>
#include <cmath>
using namespace std;
int minMailsToBeSent(int n, int k, int x){
   int m = (n - 1) + ceil((n - 1) * 1.0 / x) * (n - 1) + ceil(n * 1.0 / x) * (k- n);
   return m;
}
int main(){
   int questions = 3;
   int students = 3;
   int X = 1;
   cout << "No of mails to be sent: " << minMailsToBeSent(questions, students, X) << endl;
   return 0;
}

出力

上記のプログラムをコンパイルして実行する場合。次の出力を生成します-

No of mails to be sent: 6

  1. C++を使用して停止ステーションの数を見つける

    ポイントXとYの間にn個の中間駅があります。2つの駅が隣接しないように、s駅に停車するように列車を配置できるさまざまな方法の数を数えます。そのため、この記事では、停車駅の数を見つけるためのあらゆる可能なアプローチについて説明します。問題を見ると、sの駅数で列車を止めることができる組み合わせを見つける必要があることがわかります。 問題を解決するためのアプローチ 中間駅が8つあり、3つの中間駅で電車を止める方法を見つける必要がある例を見てみましょう。 n = 8, s = 3 (n-s)、つまり電車が止まらない駅が5つ残っています 電車が止まらないA、B、C、D、Eの5つの駅があります

  2. C++で対戦相手を捕まえるために必要な最小ステップ数を見つけるためのプログラム

    [u、v]の形式のツリーエッジのリストがあると仮定します。これは、uとvの間に無向エッジがあることを示します。また、xとyの2つの値があります。ノードxにいて、対戦相手がノードyにいる場合。最初のラウンドでは移動し、次のラウンドでは対戦相手が移動します。対戦相手は、ラウンドで移動しないことを選択できます。対戦相手を捕まえるのに必要な最小ラウンド数を見つける必要があります。 したがって、入力がedges =[[0、1]、[0、2]、[1、3]、[1、4]]、x =0、y =3のような場合、出力は3になります。最初と同じように、ノード0から1に移動します。その後、対戦相手は現在のノード3に留まり