月と初日のカレンダーの列をカウントするC++コード
mとdの2つの数があるとします。曜日が列として表され、行が現在の日であるカレンダーについて考えてみます。カレンダーの列のうち、月mとその月dの最初の日付の平日を指定する必要がある列の数を知りたい(年がうるう年ではないと仮定)。
したがって、入力がm=11のような場合。 d =6の場合、11月1日は土曜日で5列で十分なので、出力は5になります。
ステップ
これを解決するには、次の手順に従います-
Define an array a of size: 13 := { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } return (a[m] + d + 5) / 7
例
理解を深めるために、次の実装を見てみましょう-
#include <bits/stdc++.h> using namespace std; int solve(int m, int d){ int a[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; return (a[m] + d + 5) / 7; } int main(){ int m = 11; int d = 6; cout << solve(m, d) << endl; }
入力
11, 6
出力
5
-
C++で最初と最後の桁が同じ数を数える
[最初、最後]の間隔が与えられます。目標は、この間隔内で最初と最後の桁が同じである数の数を見つけることです。たとえば、232の最初と最後の桁は2と同じです。 これを行うには、i=firstからi=lastまでトラバースします。数字ごとに、最初の桁と最後の桁を比較します。同じ場合は、カウントを増やします。 例を挙げて理解しましょう。 入力 −最初=8最後=40 出力 −最初と最後の桁が同じ数の数− 5 説明 −最初と最後の数字が同じ8から40までの数字- 8, 9, 11, 22, 33 入力 −最初=100最後=200 出力 −最初と最後の桁が同じ数の数:5 説明 −最
-
C++で前半ビットと後半ビットの合計が同じである偶数の長さのバイナリシーケンスをカウントします
バイナリシーケンスの入力として、いくつかのビットnが与えられます。ここでの目標は、前半ビットと後半ビットの合計が等しくなるような長さ2nのバイナリシーケンスを見つけることです。最初のnビットと次のnビットの合計は同じです。 バイナリシーケンスがあるため、任意の場所に数字を配置する唯一の選択肢は0と1です。前半と後半のnビットの場合、いいえ。可能な組み合わせは次のとおりです- すべてゼロのnビット(0 1)nC0 =1 11のnC1を含むnビット 21のnC2を含むnビット 。 。 n1のnCnを含むnビット 2nビットの場合 前半は01で、後半は01でnC0X nC0