Coding Test/acmicpc
백준 1748 - 수 이어 쓰기 1 (c++)
_영광
2020. 8. 3. 21:22
백준 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;
}