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つの基数から別の基数に変換するプロセ