目次
解決策を見つける方法
ブルートフォース法
出力
効率的な方法
上記のコードの説明
結論
ホームページ バックエンド開発 C++ C++を使用して、L番目とR番目のインデックスの間に設定されたビットのみを持つ数値を見つけます

C++を使用して、L番目とR番目のインデックスの間に設定されたビットのみを持つ数値を見つけます

Aug 26, 2023 pm 09:45 PM
ビット演算 Cプログラミング デジタル上映

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Golang のビット演算 (ビット演算子) の簡単な分析 Golang のビット演算 (ビット演算子) の簡単な分析 Feb 24, 2023 pm 07:42 PM

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

C++ を使用して N 番目の非平方数を見つけるコードを作成する C++ を使用して N 番目の非平方数を見つけるコードを作成する Aug 30, 2023 pm 10:41 PM

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

Cプログラミングで円の面積を求める Cプログラミングで円の面積を求める Aug 25, 2023 pm 10:57 PM

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

C++で書かれた配列の右回転のための反転アルゴリズム C++で書かれた配列の右回転のための反転アルゴリズム Sep 08, 2023 pm 08:17 PM

この記事では、指定された配列を 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++ を使用して配列内の一意のペアの数を見つける C++ を使用して配列内の一意のペアの数を見つける Sep 07, 2023 am 11:53 AM

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

JavaでBitSet関数を使用してビット演算を実行する方法 JavaでBitSet関数を使用してビット演算を実行する方法 Jun 26, 2023 pm 06:11 PM

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

C++ を使用して、同じ最小値と最大値を持つ部分配列の数を見つけるコードを作成します。 C++ を使用して、同じ最小値と最大値を持つ部分配列の数を見つけるコードを作成します。 Aug 25, 2023 pm 11:33 PM

この記事では、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、

C++ で書かれており、セット上の再帰関係の数を見つけます。 C++ で書かれており、セット上の再帰関係の数を見つけます。 Aug 26, 2023 pm 08:17 PM

この記事では、セット上の再帰的関係を見つける方法を説明します。この問題では、数値 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*

See all articles