1부터 15까지는 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5 -> 총 21개
자연수 N (3<=N<=100,000,000)
숫자의 총 개수
#include<iostream>
using namespace std;
int main() {
int n, count=0;
cin >> n;
for (int i = 1; i <= n; i++) {
if (i < 10) {
count++;
}
else {
int temp = i;
while (temp > 0) { //10 이상인 경우 자리수 나누기
count++;
temp /= 10;
}
}
}
cout << count << endl;
return 0;
}
한자리수: 9 -> 9개
두자리수: 99 -> 2x(99-9)개
세자리수: 999 -> 3x(999-99)개
N의 자리수보다 한 자리 작은 수까지의 개수를 센 후 남은 수만큼 더해주기
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
int count = 0;//숫자 개수
int times = 1;//자리수
int compare = 0; //0,9,99,999...
int num = 9; //9,90,900... -> 자리수 마다의 수의 개수
while (compare+9 < n) {
compare += num;
count += (num * times);
times++;
num *= 10;
}
count += (n - compare) * times; //개수가 남은 경우 더해주기
cout << count << endl;
return 0;
}