Giả sử chúng ta được cho một số nguyên k. Chúng ta gọi một số là số đặc biệt nếu tất cả các chữ số trong số đó đều giống nhau. Ví dụ: 1, 11, 1111 là các số đặc biệt. Chúng ta đếm các số đặc biệt theo thứ tự: 1, 11, 111, 1111, 2, 22, 222, 2222, 3, 33, 333, 3333, và cứ thế. Chúng ta phải tìm tổng số chữ số có trong các số đặc biệt đến k. Giá trị của k không vượt quá 10000.
Ví dụ, nếu đầu vào là k = 9999, thì đầu ra sẽ là 90.
Các bước thực hiện
Để giải quyết bài toán này, chúng ta thực hiện theo các bước sau:
s := chuyển k thành chuỗi Định nghĩa mảng v kích thước: := {0, 1, 3, 6, 10} in(((s[0] - '0') - 1) * 10 + v[độ dài của s])Ví dụ minh họa
Xem triển khai sau để hiểu rõ hơn:
#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; }Đầu vào
9999
Đầu ra
90