基数nの数を追加する
この問題では、2つの数字が与えられます。それらの数の底はnです。基数nにも加算した後、それらの数の結果を見つける必要があります。
最初に、数値は10進数に変換されます。 10進数の値から、簡単に追加できます。最後に、数値は再び基数nの数値に変換されます。
n個の基数は文字列として指定されます。これは、基数が9より大きい数の場合、16進数のように、6文字(A〜F)のように、数字を表すアルファベットが含まれている場合があるためです。
入力と出力
Input: The base of a number system: 16 First number 2C Second number 5F Output: The result of addition is: 8B
アルゴリズム
baseNtoDec(number、base)
入力- 基数Nの数値文字列、基数Nの値。
出力- 基数Nの数値に相当する10進数。
Begin len := length of number power := 1 num := 0 for i := len -1 down to 0, do if number[i] >= base, then return invalid number num := num + number[i] * power power := power * base done return num End
decToBaseN(dec、base)
入力: 10進数。10進数をその基数に変換するための基数N。
出力: ベースNの数値文字列。
Begin while dec > 0, do res := concatenate (dec mod base) with res dec := dec / base done reverse the result return res End
addBaseN(num1、num2、base)
入力: ベースNの2つの数値、ベースNの値。
出力: ベースNに加算した後の数。
Begin dec1 := baseNtoDec(num1, base) dec2 := baseNtoDec(num2, base) sum := decToBaseN(dec1 + dec2, base) return sum End
例
#include<iostream> #include<algorithm> using namespace std; int getVal(char c) { if(c >= '0' && c<='9') return int(c-'0'); //decimal value of given number else return int(c-'A'+10); //for Alphanumeric numbers } char revVal(int n) { if(n >= 0 && n <=9) return char(n+'0'); //character value of given number else return char(n+'A'-10); //for Alphanumeric numbers, get alphabet from decimal } int baseNtoDec(string number, int base) { int len = number.size(); int power = 1; int num = 0; for(int i = len-1; i>= 0; i--) { //from last digit to first digit if(getVal(number[i]) >= base) return INT_MIN; //when a digit is >= base, return -ve infinity as error num += getVal(number[i])*power; power = power*base; } return num; } string decToBaseN(int dec, int base) { string res = ""; //empty string while(dec > 0) { res += revVal(dec%base); dec /= base; } reverse(res.begin(), res.end()); //reverse the string to get final answer return res; } int main() { int base; string num1, num2, sum; cout << "Enter Base: "; cin >> base; cout << "Enter first number in base "<<base<<": ";cin >> num1; cout << "Enter second number in base "<<base<<": ";cin >> num2; sum = decToBaseN((baseNtoDec(num1, base) + baseNtoDec(num2, base)), base); cout << "The result of addition is: " << sum; }
出力
Enter Base: 16 Enter first number in base 16: 2C Enter second number in base 16: 5F The result of addition is: 8B
-
JavaScript番号の例
以下はJavaScriptの数字の例です- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> body
-
JavaScriptで2つの数値を加算するときに必要なキャリーの数
問題 2つの数値を受け取るJavaScript関数を作成する必要があります。 私たちの関数は、紙に追加するかのように、それらの数を追加するときに必要なキャリーの数をカウントする必要があります。 次の画像のように179と284を追加すると、キャリーを2回使用したため、これら2つの数値に対して、関数は2を返す必要があります。 例 以下はコードです- const num1 = 179; const num2 = 284; const countCarries = (num1 = 1, num2 = 1) => { let res = 0;