สมมติว่าเราได้รับจำนวนเต็ม 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