구현 문제이며, 수학적 감을 필요로 한다.
한 자리 수인 1 ~ 9는 9개
두 자리 수인 10 ~ 99는 90개
세 자리 수인 100~999는 900개
...
라는 점을 기반으로 구현해서 푼다.
이런 류의 수학적인 구현력이 많이 부족하다고 느꼈다.
생동성 시험을 하며 병원에서 피 뽑으면서 풀어서 집중하지 못했다.
결과적으로 오래 걸려서 아쉽다.
/*
https://www.acmicpc.net/problem/1790
백준 1790 수 이어 쓰기 2
*/
#include <iostream>
using namespace std;
int main() {
long long aa = 0, n,k,temp = 9, l = 1;
cin>>n>>k;
while(k > 0) {
k -= temp * l;
aa += temp;
temp *= 10;
l++;
}
temp /= 10;
k += temp * --l;
aa -= temp;
long long num = (k + l - 1)/ l, mod = (k + l - 1) % l;
long long m = aa + num;
if(m > n) cout<<-1;
else {
for(long long i = 0; i < l - mod - 1; i++) {
m /= 10;
}
cout<<m % 10;
}
}
'백준' 카테고리의 다른 글
[C언어/C++] 17135 캐슬 디펜스 (0) | 2023.08.17 |
---|---|
[C++] 백준 | 27313번 효율적인 애니메이션 감상 (0) | 2023.02.10 |
[C++] 백준 | 1018번 체스판 다시 칠하기 (0) | 2023.02.08 |
[C++] 백준 | 19590번 비드맨 (0) | 2023.02.06 |
[C++] 백준 | 17143번 낚시왕 (0) | 2023.02.03 |