C++を使用して、L番目とR番目のインデックスの間に設定されたビットのみを持つ数値を見つけます
指定された問題では、指定された範囲 L、R の間に設定されたビットがすべて含まれる数値の値を見つける必要があります。例: −
Input: L = 1, R = 5 Output: 62 Explanation: representation of given L and R in binary form is 0..0111110 Input: L = 1, R = 4 Output: 30 Explanation: representation of given L and R in binary form is 0..11110
解決策を見つける方法
与えられた問題において、力任せの方法と効率的な方法の 2 つの方法について説明します。
ブルートフォース法
この方法では、指定された範囲を反復処理し、指定された範囲内のすべての 2 の累乗を合計するだけで、これが答えになります。
例
#include<bits/stdc++.h> using namespace std; int main() { int L = 1, R = 3; // the given range int ans = 0; // our answer for(int i = L; i <= R; i++) // traversing through the whole range ans += pow(2, i); // adding values to the answer. cout << ans << "\n"; }
出力
14
このアプローチでは、範囲を反復処理し、範囲内の数値の 2 の累乗を単純に加算します。このプログラムの時間計算量は O(N) です。ここで、N は範囲のサイズです。しかし、与えられた問題にビット知識を適用することで、時間計算量をさらに改善できます。
効率的な方法
この方法では、答えを計算するための式を単純に構築します。
例
#include<bits/stdc++.h> using namespace std; int main() { int L = 1, R = 3; // the given range int ans = 0; // our answer for(int i = L; i <= R; i++) // traversing through the whole range ans += pow(2, i); // adding values to the answer. cout << ans << "\n"; }
出力
14
このメソッドでは、答えを計算するための式を定式化します。
上記のコードの説明
ご存知のとおり、指定された範囲内でビットを設定して数値を数える必要があるため、このメソッドではビットが数値に設定されていることがわかります。次に、すべてのビットが 1 から (L-1) に設定された数値を減算する必要があるため、この観察を定式化します。指定されたコードの全体的な時間計算量は O(1) であり、これは定数時間計算量であり、定数時間で任意の答えを計算できることを意味します。
結論
この記事では「L番目とR番目のインデックスの間にビットが設定されている数値のみ」を対象としたプログラムを書きます。また、C プログラムと、この問題を解決するための完全な方法 (一般的かつ効率的) も学びました。同じプログラムを C、Java、Python などの他の言語で書くことができます。この記事がお役に立てば幸いです。
以上がC++を使用して、L番目とR番目のインデックスの間に設定されたビットのみを持つ数値を見つけますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









コンピュータのメモリが高価で処理能力が限られていた古き良き時代には、情報を処理するためにハッカースタイルのビット演算を使用することが好まれた方法でした (場合によっては唯一の方法でした)。今日に至るまで、ビット演算の直接使用は、低レベルのシステム プログラミング、グラフィックス処理、暗号化など、多くのコンピューティング分野で不可欠な部分となっています。

私たちは皆、2、3、5、7、8 など、数の 2 乗ではない数字を知っています。非正方形の数は N 個あり、すべての数を知ることは不可能です。そこで、この記事では、平方なしまたは非平方数と、C++ で N 番目の非平方数を見つける方法についてすべて説明します。 N 番目の非平方数 数値が整数の 2 乗である場合、その数値は完全平方と呼ばれます。完全平方数の例としては、-1issquareof14issquareof29issquareof316issquareof425issquareof5 などがあります。数値がどの整数の平方でもない場合、その数値は非正方形と呼ばれます。たとえば、最初の 15 個の非平方数は -2、3、5、6 です。

円は閉じた図形です。円上のすべての点は、円内の点から等距離にあります。中心点を円の中心といいます。点から円の中心までの距離を半径といいます。面積は、閉じた図形の寸法の範囲を定量的に表現したものです。円の面積は、円の寸法内に囲まれた面積です。円の面積を計算する式、Area=π*r*r 面積を計算するには、円の半径を入力として与え、その式を使用して面積を計算します。アルゴリズム STEP1: stdinput を使用してユーザーからの入力として半径を取得します。STEP2 : area=( を使用して円の面積を計算します。

この記事では、指定された配列を k 要素分右に回転する逆転アルゴリズムについて学びます。たとえば、−Input:arr[]={4,6,2,6,43,7,3,7}、 k= 4出力:{43,7,3,7,4,6,2,6}説明:配列の各要素を 4 要素ずつ右に回転すると、{43,7,3,7,4,6,2,6} が得られます。入力:arr[]= {8 ,5,8,2,1,4,9,3},k=3出力:{4,9,3,8,5,8,2,1} 解決策を見つける

C++ の配列構文でいくつかの一意のペアを作成するには、適切な知識が必要です。一意のペアの数を見つけるときに、指定された配列内のすべての一意のペアを数えます。つまり、各ペアが一意である必要がある場所で、考えられるすべてのペアが形成される可能性があります。例: -Input:array[]={5,5,9}Output:4説明:すべての一意のペアの数は(5,5)、(5,9)、(9,5)、および(9,9)です。入力:array[] = {5,4,3,2,2}出力:解決策を見つける16の方法 この問題を解決するには2つの方法があります。

BitSet は、ビット演算に使用される Java のクラスです。 BitSet はバイナリ ビットで構成される配列と考えることができ、各バイナリ ビットは 0 または 1 のみになります。 BitSet は、設定、クリア、反転、取得などのビット操作を実行するための一連のメソッドを提供します。 Javaでビット演算を行うにはBitSetを使うのが非常に簡単なので、以下に具体的な操作手順を紹介します。 1. BitSet オブジェクトの作成 BitSet オブジェクトは 2 つの方法で作成できます: 1. デフォルト値を使用して BitSet オブジェクトを作成します。

この記事では、C++ を使用して、最大値と最小値が同じ部分配列の数を求める問題を解決します。以下は問題の例です。 -入力:array={2,3,6,6,2,4,4,4}出力:12説明:{2},{3},{6},{6}, {2 }、{4}、{4}、{4}、{6,6}、{4,4}、{4,4}、および {4,4,4} は、同じ最大要素と最小要素で形成できるサブ配列です。入力: 配列 = {3, 3、1、5、

この記事では、セット上の再帰的関係を見つける方法を説明します。この問題では、数値 n と n 個の自然数のセットが与えられ、再帰関係の数を決定する必要があります。再帰的関係 - 集合 A 内のすべての 'a' について (a, a) が関係 R に属している場合、関係 R は集合 A 上の再帰的関係であると言われます。例: -Input:x=1Output:1説明:set={1},reflexiverelationsonA*A:{{1}}Input:x=2Output:4説明:set={1,2},reflexiverelationsonA*
