สมมติว่าเราได้รับจำนวนเต็มบวก เราต้องสะกดตัวเลขเป็นคำ เช่นถ้าป้อนตัวเลข "56" เอาต์พุตจะเป็น "Fifty-Six" ช่วงของการแปลงสูงถึงหนึ่งพันล้าน
ดังนั้น หากอินพุตเหมือนกับอินพุต =5678 เอาต์พุตจะเป็นห้าพันหกร้อยเจ็ดสิบแปด
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- กำหนดอาร์เรย์ 'ตัวเลข' ที่มีคู่เช่น − {{"Billion", 1000000000},
- {"ล้าน", 1000000},
- {"พัน", 1000},
- {"ร้อย", 100},
- {"เก้าสิบ", 90},
- {"แปดสิบ", 80},
- {"เซเว่นตี้", 70},
- {"หกสิบ", 60},
- {"Fifty", 50},
- {"สี่สิบ", 40},
- {"สามสิบ", 30},
- {"ยี่สิบ", 20},
- {"สิบเก้า", 19},
- {"Eighteen", 18},
- {"เซเว่นทีน", 17},
- {"สิบหก", 16},
- {"สิบห้า", 15},
- {"สิบสี่", 14},
- {"สิบสาม", 13},
- {"สิบสอง", 12},
- {"สิบเอ็ด", 11},
- {"สิบ", 10},
- {"เก้า", 9},
- {"แปด", 8},
- {"เซเว่น", 7},
- {"หก", 6},
- {"ห้า", 5},
- {"โฟร์", 4},
- {"สาม", 3},
- {"สอง", 2},
- {"หนึ่ง", 1}}
- กำหนดฟังก์ชัน Solve() ต้องใช้อินพุต
- ถ้าอินพุตเหมือนกับ 0 แล้ว −
- คืนค่า "ศูนย์"
- สำหรับแต่ละ num ในหมายเลขอาร์เรย์ ให้ทำ
- ถ้าค่าที่สองของ num <=อินพุต ดังนั้น −
- ถ้าค่าที่สองของ num>=100 แล้ว −
- ผลลัพธ์ :=แก้ (ค่าอินพุต / วินาทีของ num)
- ถ้าอินพุต> (อินพุต / ค่าวินาทีของ num) * ค่าที่สองของ m แล้ว −
- ผลลัพธ์ :=ผลลัพธ์ + " " + แก้ปัญหา (อินพุต - (ค่าอินพุต / วินาทีของ num))
- มิฉะนั้น
- ผลลัพธ์ :=ค่าแรกของ num + ((หากป้อน> ค่าที่สองของ num แล้ว:" " + แก้ปัญหา (อินพุต - ค่าที่สองของ num) มิฉะนั้น:" "))
- ออกมาจากวงจร
- ถ้าค่าที่สองของ num>=100 แล้ว −
- ถ้าค่าที่สองของ num <=อินพุต ดังนั้น −
- ผลตอบแทน
- ถ้าอินพุตเหมือนกับ 0 แล้ว −
- แก้(อินพุต)
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include<bits/stdc++.h>
using namespace std;
vector<pair<string, int>> numbers{{"Billion", 1000000000},
{"Million", 1000000},
{"Thousand", 1000},
{"Hundred", 100},
{"Ninety", 90},
{"Eighty", 80},
{"Seventy", 70},
{"Sixty", 60},
{"Fifty", 50},
{"Forty", 40},
{"Thirty", 30},
{"Twenty", 20},
{"Nineteen", 19},
{"Eighteen", 18},
{"Seventeen", 17},
{"Sixteen", 16},
{"Fifteen", 15},
{"Fourteen", 14},
{"Thirteen", 13},
{"Twelve", 12},
{"Eleven", 11},
{"Ten", 10},
{"Nine", 9},
{"Eight", 8},
{"Seven", 7},
{"Six", 6},
{"Five", 5},
{"Four", 4},
{"Three", 3},
{"Two", 2},
{"One", 1}};
string solve(int input) {
if (input == 0) return "Zero";
string result;
for (auto& num : numbers) {
if (num.second <= input) {
if (num.second >= 100) {
result = solve(input / num.second) + " " + num.first;
if (input > (input / num.second) * num.second)
result += " " + solve(input - (input / num.second) * num.second);
} else {
result = num.first + (input > num.second ? " " + solve(input - num.second) : "");
}
break;
}
}
return result;
}
int main() {
cout<< solve(5678) <<endl;
return 0;
} อินพุต
5678
ผลลัพธ์
Five Thousand Six Hundred Seventy Eight