สมมติว่าเราได้รับจำนวนเต็ม k เราโทรไปที่หมายเลขพิเศษหากตัวเลขทั้งหมดในหมายเลขนั้นเหมือนกัน ตัวอย่างเช่น 1, 11, 1111 เป็นตัวเลขพิเศษ เรานับเลขพิเศษตามลำดับ 1, 11, 111, 1111, 2, 22, 222, 2222, 3, 33, 333, 3333 เป็นต้น เราต้องหาจำนวนหลักทั้งหมดที่เป็นเลขพิเศษถึง k ค่าของ k ไม่เกิน 10,000
ดังนั้น หากอินพุตเท่ากับ k =9999 เอาต์พุตจะเป็น 90
ขั้นตอน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
s := convert k to string
Define an array v of size: := {0, 1, 3, 6, 10}
print(((s[0] - '0') - 1) * 10 + v[length of s]) ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <bits/stdc++.h>
using namespace std;
#define N 100
void solve(int k) {
string s = to_string(k);
int v[] = {0, 1, 3, 6, 10};
cout<< ((s[0] - '0') - 1) * 10 + v[s.length()] << endl;
}
int main() {
int k = 9999;
solve(k);
return 0;
} อินพุต
9999
ผลลัพธ์
90