C ++の底の変換法を使用して、数値がkの累乗であるかどうかを確認します
ここではプログラムが表示されます。1つの数値が指定され、別の値kも指定されている場合、その数値がkの累乗であるかどうかを確認する必要があります。しかし、この問題を解決するには、底の変換法を実行する必要があります。数値が27で、k =3であるとすると、底の変換法により、27は10003になります。ここで、底を変更した後、桁1が1つだけで、他が0の場合、数値はkの累乗になります。 。
この問題を解決するために、次の手順に従います。
手順 −
- フラグを定義する:=false
- 番号が0より大きい場合は、手順3〜6を繰り返します
- 数字を見つける:=数値mod k
- 数字が1より大きい場合は、falseを返します
- それ以外の場合、数字が1の場合、フラグがTrueの場合はfalseを返し、そうでない場合はフラグ:=trueを返します。
- 設定番号:=番号/k。
- trueを返す
例
#include <iostream> #include <cmath> using namespace std; bool isPowerOfK(int num, int k) { bool flag = false; while (num > 0) { int digit = num % k; //get current digit in base k if (digit > 1) //if the digit is not 0 or 1, then it is not power of k return false; if (digit == 1) { if (flag) return false; flag = true; } num /= k; } return true; } int main() { int number = 27, K = 3; if(isPowerOfK(number, K)){ cout << number << " is power of " << K; } else { cout << number << " is not power of " << K; } }
出力
27 is power of 3
-
Nの基数B表現で後続ゼロの数を見つけます! C++を使用する
この記事では、階乗のベースB表現で特定の数Nの後続ゼロを見つける問題を理解します。例 Input : N = 7 Base = 2 Output : 4 Explanation : fact(7) = 5040 in base10 and 1001110110000 in base16 having 4 trailing zero. Input : N = 11 Base = 5 Output : 2 Explanation : fact(11) = 39916800 in base10 and 40204314200 in base16 having 2 trailing zeroes.
-
Nの基数16表現で後続ゼロの数を見つけます! C++を使用する
この記事では、たとえば階乗の基数16の表現で特定の数Nの後続ゼロを見つける問題を理解します Input : N = 7 Output : 1 Explanation : fact(7) = 5040 in base10 and 13B0 in base16 having 1 trailing zero. Input : N = 11 Output : 2 Explanation : fact(11) = 39916800 in base10 and 2611500 in base16 having 2 trailing zeroes. まず、10進数を1つの基数から別の基数に変換するプロセ