C++

 Computer >> コンピューター >  >> プログラミング >> C++
  1. C++で解く階乗の末尾ゼロ関数のプリイメージサイズ

    問題の概要 階乗の末尾に連続して並ぶ 0 の個数を返す関数 f(x) を考えてみましょう。たとえば 3! = 6 には末尾の 0 がないため f(3) = 0 となり、11! = 39916800 には末尾に 0 が 2 個あるため f(11) = 2 となります。 本記事のテーマは、整数 K が与えられたときに「f(x) = K を満たす非負整数 x が何個存在するか」を求めることです。 たとえば入力が K = 2 の場合、答えは 5 になります。 解法のポイント n! の末尾に付く 0 の個数は、その階乗に含まれる素因数 5 の個数と一致します。これは 2 の因数のほうが常に十分に多く

  2. C++で最高スコアを得る最小の回転量Kを求める方法

    問題の概要 配列 A が与えられたとします。この配列を K だけ回転すると、配列は A[K], A[K+1], …, A[A.length−1], A[0], A[1], …, A[K−1] の順に並び替えられます。そして、回転後の配列において「値がそのインデックス以下である要素」に対して 1 点が与えられます。 例として、配列 [2, 4, 1, 3, 0] を K = 2 で回転すると [1, 3, 0, 2, 4] になります。このときの得点は次のように計算され、合計 3 点となります。 1 > 0 → 得点なし 3 > 1 → 得点なし 0 <= 2 → 1 点 2

  3. C++で半円の面積と周囲の長さを求めるプログラム

    はじめに この記事では、半円の半径が与えられたときに、その面積と周囲の長さをC++で計算するプログラムの作り方をわかりやすく解説します。 半円とは? 半円(SemiCircle)とは、円を直径で半分に分割して得られる閉じた図形のことです。 入力と出力の例 まず、具体的な例を見てみましょう。 入力 R = 5 出力 area = 39.25perimeter = 15.7 解法のアプローチ この問題は、円の面積と周囲の長さに関する数学的な公式を応用することで解けます。半円は円を半分にした図形であるため、その面積は円の面積を2で割った値になります。 半円の面積 A: A = ½ × π × a²

  4. C++で同じ平均値を持つ2つのグループに配列を分割できるか判定する方法

    配列 A が与えられたとします。この配列のすべての要素を、リスト B またはリスト C のいずれかに振り分ける必要があります(初期状態では B と C はともに空です)。振り分け後、B と C がどちらも空でないという条件のもとで、両者の平均値が等しくなるような振り分けが存在するかどうかを判定します。 たとえば、入力が [1,2,3,4,5,6,7,8,9,10] の場合、答えは true になります。 解法の考え方 まず、この問題の背後にある数学的な性質を整理しましょう。配列全体の要素数を n、合計を S とします。あるグループが k 個の要素を持ち、その合計が s であるとき、両グループの

  5. 【C++】正二十面体の表面積と体積を求めるプログラムの作成方法

    この記事では、正二十面体の一辺の長さが与えられたときに、その表面積と体積をC++で計算するプログラムの作り方を解説します。 正二十面体とは? 正二十面体(Icosahedron)は、5つのプラトンの立体のひとつである正多面体で、同じ大きさの正三角形20枚から構成されています。辺の数は30、頂点の数は12です。 図中の破線は、見えている面の裏側に隠れている辺を表しています。 入力例 a = 4 解法のアプローチ この問題は、正二十面体の表面積・体積を求める幾何学の公式をそのまま使うことで解くことができます。一辺の長さを a とすると、各値は以下の式で表されます。 表面積(Surface Are

  6. C++で解く「黒板XORゲーム」― 先手・後手の勝敗を決めるシンプルな判定条件

    問題の概要 黒板には配列 nums の各要素が書き込まれています。ラム(Ram)とサム(Sam)の2人が交互に黒板からちょうど1つの数字を消していき、先手はラムです。 ルールは次の通りです。 数字を消した結果、黒板上の全要素のビット単位XORが0になった場合、その消したプレイヤーは負けとなります。 要素が1つだけの場合、そのXORは要素自身の値、要素が1つもない場合のXORは0として扱います。 自分のターンを始める時点で、すでに黒板上の全要素のXORが0になっている場合、そのプレイヤーは勝ちとなります。 具体例:nums = [1, 2, 1] ラムが最初に 1 を消すと、残りは [2,

  7. C++で楕円の面積を求めるプログラムの作成方法

    このチュートリアルでは、C++を使って楕円の面積を求めるプログラムについて解説します。楕円の面積を計算するには、長半径(半長軸)と短半径(半短軸)の2つの値が必要です。プログラムでは、これらの値を受け取り、公式に基づいて楕円の面積を計算し、その結果を出力します。楕円の面積を求める公式楕円の面積は、以下の公式で求めることができます。面積 = π × a × bここで、aは長半径、bは短半径を表します。本プログラムでは、円周率πの近似値として3.142を使用します。サンプルコード#include<bits/stdc++.h>using namespace std;// 楕円の面積を求め

  8. C++で解くバス路線問題:目的地までの最小乗車回数を求めるアルゴリズム

    問題概要バス路線のリストが与えられます。各 routes[i] には、i 番目のバスが永遠に繰り返し走行する経路が格納されています。たとえば routes[0] = [1, 5, 7] の場合、0 番目のバスは「1 → 5 → 7 → 1 → 5 → 7 → …」という順序で無限に巡回し続けます。ここで、バス停 S から出発し(最初はまだどのバスにも乗っていない状態)、バス停 T へ向かうことを考えます。目的地に到達するためには、最低何台のバスに乗る必要があるでしょうか。到達が不可能な場合は -1 を返してください。たとえば、入力が [[1,2,8],[3,6,8]]、S = 1、T = 6

  9. C++で平行四辺形の面積を求めるプログラムの作成方法

    この記事では、平行四辺形の底辺と高さを表す2つの値が与えられたとき、C++を使ってその面積を求めるプログラムを作成する方法を解説します。 平行四辺形とは? 平行四辺形とは、4つの辺からなる閉じた図形であり、向かい合う2組の辺がそれぞれ長さが等しく、互いに平行になっている四角形のことです。 問題を理解するための具体例 入力 B = 20, H = 15 出力 300 説明 平行四辺形の面積 = 底辺 × 高さ = 20 × 15 = 300 解決アプローチ この問題を解くには、平行四辺形の面積を求める幾何学の公式を使用します。 面積 = 底辺 × 高さ つまり、与えられた底辺と高さを掛け合わせ

  10. C++で解く「レースカー」問題 ― 最短命令列をBFSで求める

    問題の概要 無限に続く数直線上で、車は位置 0・速度 +1 の状態からスタートします。車は「A(アクセル:加速)」と「R(リバース:反転)」の2種類からなる命令列に従って自動的に走行します。 命令「A」を受け取ったときの動作 位置 := 位置 + 速度、その後 速度 := 速度 × 2 命令「R」を受け取ったときの動作 速度が正であれば 速度 := -1 そうでなければ 速度 := 1 例えば、命令列「AAR」を実行すると、車の位置は 0→1→3→3 と遷移し、速度は 1→2→4→-1 と変化します。 この問題では、目標位置が与えられたとき、そこへ到達するための最短の命令列の長さを求め

  11. C++で五角形の面積を求めるプログラムの作り方

    この記事では、五角形の一辺の長さを表す数値 n が与えられたとき、その五角形の面積を求めるC++プログラムの作り方を解説します。 五角形とは? 五角形(ペンタゴン)とは、5つの辺を持つ多角形のことです。 正五角形とは? 正五角形とは、5つの辺の長さと内角がすべて等しい五角形です。本記事では、この正五角形を対象に面積を計算します。 入力・出力例 まず、具体例を使って問題を確認しましょう。 入力 a = 7 出力 84.3 解法アプローチ この問題は、幾何学で定義されている正五角形の面積の公式を使えば、直接的に解くことができます。一辺の長さを a とすると、正五角形の面積は次の式で表されます。

  12. C++で解く回文分割 III(Palindrome Partitioning III)― DPとメモ化再帰による最小文字変更数の求め方

    問題の概要 小文字の英字のみからなる文字列 s と整数 k が与えられます。このとき、次の条件を満たす必要があります。 まず、必要に応じて s 内の一部の文字を、別の小文字の英字に変更します。 その後、文字列 s を k 個の部分文字列に分割し、それぞれが回文になるようにします。 求めるのは、この分割を実現するために変更が必要な文字数の最小値です。 具体例 例えば、文字列が "ababbc"、k = 2 の場合、答えは 1 になります。わずか 1 文字の変更で 2 つの回文に分割できるためです。末尾の c を b に変更すれば "bbb" と &q

  13. C++で損益分岐点(Break-Even Point)を求めるプログラムの作成方法

    はじめに 本記事では、月間の総支出(E)、製品の販売価格(S)、製品1個あたりの維持費(M)という3つの値が与えられたときに、C++で損益分岐点を求めるプログラムを作成する方法を解説します。 損益分岐点(Break-Even Point)とは、売り手が損失も利益も出さずに済む、つまり総支出と総収益がちょうど等しくなるために販売しなければならない製品の総数のことです。 問題の概要 損失が発生しないようにするために、最低限いくつの製品を販売する必要があるのかを求めるのが課題です。 入力例 E = 2400, S = 150, M = 30 出力例 20 解説 まず、製品1個あたりの利益は次

  14. C++で三角形の重心を求めるプログラムの作成方法

    この記事では、三角形の3つの頂点の座標を格納した2次元配列が与えられたときに、その三角形の重心を求めるC++プログラムの作成方法を解説します。 三角形の重心とは、三角形の3本の中線がすべて交わる点のことです。 また、三角形の中線とは、ある頂点と、その対辺(向かい合う辺)の中点を結ぶ線分のことを指します。 それでは、具体的な例を使って問題を確認してみましょう。 入力 (-3, 1), (1.5, 0), (-3, -4) 出力 (-1.5, -1) 説明 重心 (x, y) = ((-3 + 1.5 - 3) / 3, (1 + 0 - 4) / 3) = (-1.5, -1) 解法のアプロ

  15. C++でバイナリ行列をゼロ行列に変換するための最小反転回数を求める方法

    m × n のバイナリ行列(0 と 1 のみで構成された行列)mat が与えられます。1 ステップごとに、任意のセルを 1 つ選び、そのセルのビットと、存在する場合は上下左右 4 つの隣接セルのビットをすべて同時に反転することができます。mat をゼロ行列(全要素が 0 の行列)へ変換するために必要な最小ステップ数を求めてください。解が存在しない場合は -1 を返します。 たとえば、入力が [[0,0], [0,1]] の場合、変換の過程は次のようになります。 この場合、3 ステップが必要となるため、出力は 3 になります。 解き方のアプローチ:BFS(幅優先探索)とビットマスク この問

  16. C++で指定された比率から各種コインの枚数を求めるプログラム

    この問題では、合計金額(totalPrice)と、袋の中にある1ルピー硬貨・50パイサ硬貨・25パイサ硬貨の比率を表す4つの数値が与えられます。私たちの課題は、C++で指定された比率から各種コインの枚数を求めるプログラムを作成することです。問題の概要ここでは、袋の中の1ルピー硬貨、50パイサ硬貨、25パイサ硬貨を組み合わせて、与えられた合計金額になるようにします。まず、具体例を使って問題を理解しましょう。入力TotalPrice = 225, 1Rs = 2, 50P = 3, 25P = 4出力1ルピー硬貨 = 100枚 50パイサ硬貨 = 150枚 25パイサ硬貨 = 200枚説明比率に基

  17. C++で文字列を回文にするための最小挿入回数を求める方法

    文字列 s が与えられ、これを回文にすることを考えます。各ステップでは任意の位置に任意の文字を挿入することができ、回文を完成させるために必要な最小の挿入文字数を求めます。例えば、文字列が「mad」の場合、答えは 2 になります。これは、「mad」の先頭に「da」を追加して「damad」とするか、末尾に「am」を追加して「madam」とすることで回文を作れるためです。解法のアプローチ:LCS(最長共通部分列)を活用この問題は最長共通部分列(LCS)を使った動的計画法で効率的に解けます。鍵となるのは、元の文字列とその逆順の文字列との最長共通部分列の長さが、最長回文部分列の長さと一致するという性質で

  18. C++で正多角形の外接円(半径・面積)を求めるプログラム

    本記事では、C++を使って正多角形の外接円の半径と面積を求めるプログラムの作成方法を解説します。入力として、多角形の辺の数 N と各辺の長さ A の2つの値が与えられます。 問題の概要 この課題では、辺の数と各辺の長さが既知である正多角形に対して、その外接円(すべての頂点を通る円)の半径と面積を計算します。 具体例で問題を確認してみましょう。 入力例 n = 4(辺の数) a = 2(各辺の長さ) 解き方のアプローチ まず、与えられた正多角形の外接円の半径を求めます。辺の長さが a、辺の数が N の場合、外接円の半径は次の公式で表されます。 r = a / √( 2 × (1

  19. C++でホイールグラフの直径・閉路数・辺数を求めるプログラム

    はじめに この記事では、ホイールグラフ(Wheel Graph)の頂点数が与えられたときに、その直径・閉路の数・辺の数を求めるC++プログラムの作成方法を解説します。 問題の概要: n個の頂点を持つホイールグラフについて、閉路の総数、辺の総数、そして直径を計算する必要があります。 ホイールグラフとは まず、ホイールグラフの基本について理解しておきましょう。 ホイールグラフは、サイクルグラフ Cn-1 に新しい頂点を1つ追加することで得られるグラフです。この新しく追加された頂点はハブ(Hub)と呼ばれ、サイクル上のすべての頂点と接続されます。車輪のように見えることから「ホイールグラフ」という名

  20. C++で3つの数値の共通比(連比)を求めるプログラム

    この記事では、x:y と y:z という2つの比が与えられたときに、3つの数値の共通比(連比)x:y:z を求める C++ プログラムを紹介します。問題の概要与えられた2つの比をもとに、3つの数値 x、y、z の連比 x:y:z を導き出すことが課題です。入力例3:5 8:9出力例24 : 40 : 45考え方ここでは、x:y と y:z という2つの異なる比が与えられています。連比 x:y:z を作成するには、両方の比で中央の値 y を同じ数値に揃える必要があります。そのために用いるのが「たすき掛け(クロス乗算)」です。具体的には、1つ目の比の各項に y₂ を、2つ目の比の各項に y₁ を掛

Total 5990 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:179/300  20-コンピューター/Page Goto:1 173 174 175 176 177 178 179 180 181 182 183 184 185