백준 1748 - 수 이어 쓰기 1
생각 및 접근
- n으로부터 자릿수를 먼저 구했다.
answer = n; while(answer != 0){ answer /= 10; cnt++; }
- 1의 자릿수부터 n의 자릿수 까지 만들 새 수의 길이를 차례차례 구한다.
i != cnt
- (99 - 10 + 1) * 2
- (999 - 100 + 1) * 3
- (9999 - 1000 + 1) * 4
- ...
- (10 ^ k - 10 ^ (k - 1)) * k
i == cnt
- (n - 10 ^ (cnt - 1) + 1) * cnt
코드
#include <bits/stdc++.h>
using namespace std;
int n, answer, cnt;
int main(){
ios_base::sync_with_stdio(false);
cin >> n;
answer = n;
while(answer != 0){
answer /= 10;
cnt++;
}
for(int i = 1; i <= cnt; i++){
if(i == cnt) answer += (n - pow(10, i - 1) + 1) * i;
else answer += (pow(10, i) - pow(10, i - 1)) * i;
}
cout << answer;
}
채점 결과
'Coding Test > acmicpc' 카테고리의 다른 글
백준 1074 - Z (c++) (0) | 2020.08.05 |
---|---|
백준 14501 - 퇴사 (c++) (0) | 2020.08.05 |
백준 1339 - 단어 수학 (c++) (0) | 2020.08.04 |
백준 6064 - 카잉 달력 (c++) (0) | 2020.08.03 |
백준 1107 - 리모컨 (c++) (0) | 2020.08.02 |