අංකයක් ෂඩාස්රාකාර ලීට්කෝඩ් විසඳුම බවට පරිවර්තනය කරන්න


දුෂ්කරතා මට්ටම පහසු
නිතර අසනු ලැබේ ෆේස්බුක් මයික්රොසොෆ්ට්
බිට් හැසිරවීම

අංකයක් ෂඩාස්රාකාර ලීට්කෝඩ් විසඳුම බවට පරිවර්තනය කිරීමේ ගැටළුව අපට පූර්ණ සංඛ්‍යාවක් සපයයි. ඉන්පසු ලබා දී ඇති දේ පරිවර්තනය කරන ලෙස අපෙන් ඉල්ලා සිටී නිඛිල දශම සංඛ්‍යා පද්ධතියේ සිට ෂඩාස්රාකාර සංඛ්‍යා පද්ධතිය දක්වා. වඩාත් විධිමත් ලෙස, ප්‍රශ්නය අපට අවශ්‍ය වන්නේ 10 වන පාදයේ දක්වා ඇති පූර්ණ සංඛ්‍යාවක් පදනම් 16 නිරූපණයකට පරිවර්තනය කිරීමයි. දශම සංඛ්‍යා පද්ධතියේ අපට අංකයක් ලබා දී ඇති ගැටලුවක් අප විසින් දැනටමත් විසඳා තිබුණි. එය 7 වන පදනම බවට පරිවර්තනය කිරීමට සිදු විය. එබැවින්, තවදුරටත් ඉදිරියට යාමට පෙර, අපි උදාහරණ කිහිපයක් දෙස බලමු.

උදාහරණයක්

26
1a

අංකයක් ෂඩාස්රාකාර ලීට්කෝඩ් විසඳුම බවට පරිවර්තනය කරන්න

පැහැදිලි කිරීම: ෂඩාස්රාකාර සංඛ්‍යා පද්ධතිය ගැන දැන ගැනීමට සිදුවුවහොත් මෙම පරිවර්තනය පහසුය. නමුත් ඔබ එය නොදන්නේ නම්, ලබා දී ඇති අංකය පදනම් 16 නිරූපණය බවට පරිවර්තනය කරන්න. අප එය කරන්නේ පුනරාවර්තන බෙදීම් සහ ඉතිරි කොටස් ගබඩා කිරීමෙනි. සැලකිල්ලට ගත යුතු එක් කරුණක් නම්, 10 නිරූපණය කරන්නේ ෂඩාස්රාකාර අංකනයෙහි 'a' භාවිතා කරමිනි.

-1
ffffffff

පැහැදිලි කිරීම: 2 ණ සංඛ්‍යා ඒවායේ 1 හි අනුපූරක අංකනය ලෙස ගබඩා කර ඇති බැවින්. -2 හි 11111111111111111111111111111111s අනුපූරක අංකනය XNUMX වේ. එබැවින්, අපි මෙය ප්‍රතිදානයේ පෙන්වා ඇති ෂඩාස්රාකාර බවට පරිවර්තනය කරමු.

අංකයක් ෂඩාස්රාකාර ලීට්කෝඩ් විසඳුමක් බවට පරිවර්තනය කිරීමේ ප්‍රවේශය

ගැටලුවට ගැඹුරට කිමිදීමට පෙර අංකයක් ෂඩාස්රාකාර ලීට්කෝඩ් විසඳුම බවට පරිවර්තනය කරන්න. අපි මුලින්ම ෂඩාස්රාකාර සංඛ්‍යා පද්ධතිය ගැන හුරු වෙමු. ඉතින්, ෂඩාස්රාකාර සංඛ්‍යා පද්ධතිය ද දශම සංඛ්‍යා පද්ධතියට සමාන ය, නමුත් 10 සිට 15 දක්වා සංඛ්‍යා නිරූපණය වන්නේ 'අ' සිට 'එෆ්' දක්වා කුඩා අකුරු භාවිතා කරමිනි. එබැවින්, අපට දශම සංඛ්‍යා පද්ධතියක පූර්ණ සංඛ්‍යාවක් පදනම් 16 නිරූපණයට පරිවර්තනය කළ හැකිය. පරිවර්තනය කිරීමෙන් පසු, අපි සරලවම 10 - 15 අංක a - f සමඟ ආදේශ කරමු. නමුත් negative ණ සංඛ්‍යා සමඟ අප කරන්නේ කුමක්ද? S ණ සංඛ්‍යා 2s තුළ ගබඩා කර ඇති බැවින් ද්විමය පද්ධතියේ අනුපූරක අංකනය. අපි හුදෙක් අංකය අත්සන් නොකළ int එකක ගබඩා කර 16 වන පදනම බවට පරිවර්තනය කරමු.

ජාවා භාෂාවේ කේතය ද එකම දේ කරන නමුත් බිට් හැසිරවීම භාවිතයෙන් ටිකක් වෙනස් ආකාරයකින් ක්‍රියාත්මක වේ. ඉතින්, පළමුව අපි ලබා දී ඇති අංකයෙන් 15 ක් ලබා ගනිමු. මෙම ක්‍රියාව 16 සමඟ මෝඩ් ගැනීම හා සමාන වේ. ඉන්පසු වම් මාරුව භාවිතා කිරීම 16 භාවිතා කරමින් බෙදීමට සමාන වේ.

කේතය

අංකයක් ෂඩාස්රාකාර ලීට්කෝඩ් විසඳුමක් බවට පරිවර්තනය කිරීම සඳහා සී ++ කේතය

#include <bits/stdc++.h>
using namespace std;

const string decToHex = "0123456789abcdef";

string toHex(int n){
    if(n==0)
        return "0";
    unsigned int num = n;
    string ans = "";
    while(num > 0){
        ans = decToHex[num%16] + ans;
        num /= 16;
    }
    return ans;
}

int main(){
    cout<<toHex(26);
}
1a

අංකයක් ෂඩාස්රාකාර ලීට්කෝඩ් විසඳුමක් බවට පරිවර්තනය කිරීමට ජාවා කේතය

import java.util.*;
import java.lang.*;
import java.io.*;

class Solution
{
  public static String toHex(int n) {
        String decToHex = "0123456789abcdef";
        if(n==0)
            return "0";
        int num = n;
        String ans = "";
        while(num != 0){
            ans = decToHex.charAt(num&15) + ans;
            num = num >>> 4;
        }
        return ans;
    }
    
  public static void main (String[] args) throws java.lang.Exception
  {
    System.out.print(toHex(-1));
  }
}
ffffffff

සංකීර්ණ විශ්ලේෂණය

කාල සංකීර්ණත්වය

O (M (n) ලොග් n), මෙහි n යනු දී ඇති ආදානයේ දිග වේ, M (n) යනු බිටු 2 ක් බෙදීමට ගතවන කාලයයි. ඉතින්, කාල සංකීර්ණතාව ල ar ු ගණකය වේ.

අභ්‍යවකාශ සංකීර්ණතාව

ඕ (1), අපි අංකයේ එක් එක් ඉලක්කම් පිළිබඳ දත්ත කිසිවක් ගබඩා කර නොතිබූ බැවින්. අවකාශයේ සංකීර්ණතාව නියත ය.