បញ្ចូលទៅក្នុងដំណោះស្រាយរ៉ូម៉ាំងឡេឡេតកូដ


កម្រិតលំបាក មធ្យម
សួរញឹកញាប់ កម្មវិធី Adob ​​e ក្រុមហ៊ុន Amazon ផ្លែប៉ោម BlackRock ទីភ្នាក់ងារ Bloomberg Evernote គ្រប់ Facebook ក្រុមហ៊ុន google LinkedIn ក្រុមហ៊ុន Microsoft ក្រុមហ៊ុន Oracle ក្នុង Twitter ក្រុមហ៊ុន Yahoo
គណិតវិទ្យា ខ្សែអក្សរ

នៅក្នុងបញ្ហានេះយើងត្រូវបានផ្តល់ឱ្យលេខគត់ហើយត្រូវបានគេតម្រូវឱ្យប្តូរទៅជាលេខរ៉ូម៉ាំង។ ដូច្នេះបញ្ហាជាទូទៅត្រូវបានគេហៅថា“ អាំងតេក្រាលទៅរ៉ូម៉ាំង” ហើយនេះគឺជាលេខគត់ទៅដំណោះស្រាយរ៉ូម៉ាំងឡេឡេតកូដ។ ប្រសិនបើនរណាម្នាក់មិនដឹងអំពីលេខរ៉ូម៉ាំង។ កាលពីសម័យមុនមនុស្សមិនបានប្រើលេខគត់ដូចដែលយើងប្រើក្នុងពេលបច្ចុប្បន្ននេះទេ។

លេខរ៉ូម៉ាំងត្រូវបានសរសេរជាធម្មតាពីឆ្វេងទៅស្តាំក្នុងការថយចុះលំដាប់ប៉ុន្តែមានករណីលើកលែងខ្លះចំពោះបញ្ហានេះ។ ប្រសិនបើលេខមួយចំនួនតូចជាងលេខបន្ទាប់យើងដកលេខបច្ចុប្បន្នពីផលបូកវិជ្ជមាន។ វិធានទូទៅនៃមេដៃគឺមិនត្រូវធ្វើលេខដដែលៗច្រើនជាង ៣ ដងទេ។ គេគួរតែពិនិត្យមើលរូបភាពខាងក្រោមសម្រាប់ចំនួនគត់ទៅការបម្លែងលេខរ៉ូម៉ាំង។

បញ្ចូលទៅក្នុងដំណោះស្រាយរ៉ូម៉ាំងឡេឡេតកូដ

3
III

ការពន្យល់ៈដោយសារខ្ញុំស្មើនឹង ១ យើងធ្វើវាម្តងទៀតបីដងដើម្បីទទួលបានផលបូក = ៣ ។

4
IV

ការពន្យល់ៈយើងមិនអាចធ្វើម្តងទៀតខ្ញុំ ៤ ដងទេពីព្រោះយើងមិនអាចធ្វើម្តងទៀតខ្ញុំលើសពី ៣ ដងទេ។ ដូច្នេះយើងជិះយន្ដហោះមួយ I មុន V. ដោយសារខ្ញុំតូចជាង V ដូច្នេះ ១ ត្រូវបានដកចេញពីចំនួនសរុបដែលស្មើនឹង ៥ ។ ដូច្នេះធ្វើឱ្យផលបូកសរុបស្មើនឹង ៤ ។

វិធីសាស្រ្តសម្រាប់ការរួមបញ្ចូលទៅនឹងដំណោះស្រាយរ៉ូម៉ាំងឡេឡេតកូដ

បញ្ហា“ អាំងតេក្រាលទៅរ៉ូម៉ាំង” អាចត្រូវបានដោះស្រាយតាមរបៀបលោភលន់ដែលដំបូងយើងព្យាយាមបំលែងលេខទៅជាចំនួនខ្ពស់បំផុត។ វិធីសាស្រ្តកម្លាំងដុសខាត់ចំពោះបញ្ហានេះមិនអាចធ្វើទៅបានទេពីព្រោះវាមិនអាចទៅរួចទេហើយជាទូទៅក៏មិនអាចអនុវត្តបានដែរ។ ក្នុងលក្ខណៈនេះយើងបន្តទៅរកនិកាយតូចៗជាលេខរ៉ូម៉ាំង។ ប៉ុន្តែវិធីសាស្រ្តនេះនឹងត្រូវបរាជ័យនៅពេលដែលយើងព្យាយាមបំលែង ៤ ។ វិធីសាស្រ្តនេះនឹងបោះពុម្ព ៤ ដង I. ដូច្នេះយើងត្រូវរកវិធីដើម្បីដោះស្រាយបញ្ហានេះ។

ជាការប្រសើរណាស់ប្រសិនបើយើងក្រឡេកមើលយ៉ាងជិតស្និទ្ធមានតែវិធីដែលអាចធ្វើទៅបានដែលអាចទុកចិត្តបាននៅពេលដែលយើងអាចរត់ទៅក្នុងករណីលើកលែងនេះ។ ការលើកលែងទាំងនេះគឺមានតែនៅពេលដែលយើងធ្វើម្តងទៀតនូវលេខមួយចំនួនច្រើនជាង ៣ ដង។ ដូច្នេះគ្រាន់តែព្យាយាមរកវិធីសរសេរលេខគត់ដែលអាចជាករណីលើកលែង។ យើងត្រូវដឹងថាការលើកលែងគឺលេខ ៤ ៩ ៩ ៤០ ៩០ ៤០០ ៩០០ ដែលអាចប្តូរទៅជាអាយភីអេចអេសអេចស៊ីអេសស៊ីស៊ីស៊ីអេមស៊ីអិម។

ការដោះស្រាយជាមួយនឹងការលើកលែង

ដូច្នេះរហូតមកដល់ពេលនេះយើងគិតពីការបំលែងលេខគត់ដែលបានផ្តល់អោយលេខរ៉ូម៉ាំងតួអក្សរតែមួយដែលមាន។ ប៉ុន្តែដើម្បីទទួលបានការលើកលែងយើងដោះស្រាយវាដោយឡែកពីគ្នា។ ដូច្នេះយើងបង្កើតពីរ អារេ មួយដែលផ្ទុកតម្លៃអាំងតេក្រាលដែលត្រូវនឹងលេខរ៉ូម៉ាំងនីមួយៗ។ អារេផ្សេងទៀតផ្ទុកលេខរ៉ូម៉ាំង។ អារេទាំងពីររក្សាទុកលេខគត់និងលេខរ៉ូម៉ាំងនៅសន្ទស្សន៍ដែលត្រូវគ្នា។

ឥឡូវនេះអ្វីដែលនៅសេសសល់គឺគ្រាន់តែប្រើការប្រែចិត្តជឿដែលត្រូវបានធ្វើតាមរបៀបលោភលន់ប៉ុណ្ណោះ។ ចាប់ផ្តើមជាមួយនឹងលេខរ៉ូម៉ាំងធំជាងគេហើយប្រសិនបើចំនួននេះធំជាងចំនួនលេខរ៉ូម៉ាំងបច្ចុប្បន្ន។ បន្ថែមលេខរ៉ូម៉ាំងទៅជាចម្លើយ ខ្សែអក្សរ និងដកតម្លៃសំខាន់ពីចំនួនគត់ដែលបានផ្តល់។ ដកលេខបច្ចុប្បន្នរហូតដល់ចំនួនគត់ដែលបានផ្តល់គឺធំជាងលេខបច្ចុប្បន្ន។ នៅពេលអ្នកឈានដល់ចំនុចមួយនៅពេលដែលលេខបច្ចុប្បន្នតូចជាងតម្លៃចំនួនគត់បច្ចុប្បន្ន។ គ្រាន់តែពិនិត្យមើលលេខរ៉ូម៉ាំងតូចជាងបន្ទាប់។ នៅពេលដែលយើងបានធ្វើរួចជាមួយលេខរ៉ូម៉ាំងទាំងអស់យើងនឹងឆ្លើយតប។

លេខកូដសម្រាប់លេខគត់ទៅដំណោះស្រាយរ៉ូម៉ាំងឡេឡេតកូដ

លេខកូដ C ++ សម្រាប់លេខគត់ទៅរ៉ូម៉ាំង Leetcode ដំណោះស្រាយ

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

string intToRoman(int num) {
    vector<string> romans({"I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M"});
    vector<int> value({1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000});
    int seqSize = romans.size();
    int idx = seqSize - 1;
    string ans = "";
    while(num>0){
        while(value[idx]<=num){
            ans += romans[idx];
            num -= value[idx];
        }
        idx--;
    }
    return ans;
}

int main(){
    cout<<intToRoman(4);
}
IV

កូដចាវ៉ាសំរាប់បញ្ចូលទៅដំណោះស្រាយរ៉ូម៉ាំងឡេឡេយកូដ

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

class Main {
    public static String intToRoman(int num) {
        String romans[] = {"I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M"};
        int value[] = {1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000};
        int seqSize = romans.length;
        int idx = seqSize - 1;
        String ans = "";
        while(num>0){
            while(value[idx]<=num){
                ans += romans[idx];
                num -= value[idx];
            }
            idx--;
        }
        return ans;
    }
    public static void main(String[] args){
    	System.out.println(intToRoman(4));
    }
}

 

IV

ការវិភាគស្មុគស្មាញ

ស្មុគស្មាញពេលវេលា

ឱ (១), ពីព្រោះយើងកំពុងប្រើចំនួនជំហានថេរដើម្បីរកលទ្ធផល។

ភាពស្មុគស្មាញនៃលំហ

ឱ (១), ដោយសារតែយើងបានរក្សាទុកតែចំនួនថេរនៃអថេរនិងអារេដែលយើងបានប្រើក៏មានទំហំថេរដែរ។