๐ค๋ฌธ์ ์ดํด
1๋ถํฐ N๊น์ง ์ซ์๋ฅผ ์ด์ด์จ์ ๋ง๋ ์์ k๋ฒ์งธ ์๋ฆฌ์ ์ซ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ !
๋ฌธ์ ๊ฐ ์งง์ ๋งํผ ๊ฐ๋จํ๋ค.
๐ก์ฒซ๋ฒ์งธ ์์ด๋์ด
๊ฐ๋จํ๊ฒ ์๊ฐํ์ ๋ N์ ์๋ฆฟ์๊ฐ n์ผ ๋ ์๋กญ๊ฒ ๋ง๋ค์ด์ง๋ ์๋ 1*9 + 2*90 + 3*900 + ... (n-1)*((10^n -1)-(10^n-2))์ ๊ฐ์ฅ ์์ n์๋ฆฌ ์๋ถํฐ n๊น์ง๋ฅผ ๋ํ๋ฉด ๊ตฌํ ์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค.
k๋ฅผ ์ฐพ์ ๋์๋ k๊ฐ ํฌํจ๋๋ ๊ณณ์ด ๋ช ์๋ฆฟ์์ผ ๋์ธ์ง๋ฅผ ํ์ ํด์ ์ต์ ์ ๊ฒฝ์ฐ 10000000~9999999๊น์ง ํ์ํ๋ฏ๋ก ์๊ฐ ์ ํ์ ๊ฑธ๋ฆฌ์ง ์์ ๊ฒ์ด๋ผ๊ณ ํ๋จํ๋ค.
๐ฅํ์ด๐ฅ
์ฒซ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ
-> k๊ฐ ํฌํจ๋๋ ์๋ฆฟ์ ๊ตฌํ๊ธฐ
๋๋ฒ์งธ ๋ฐ๋ณต๋ฌธ
-> ํด๋น ์๋ฆฟ์์ ์ต์๊ฐ~์ต๋๊ฐ๊น์ง total์ ์๋ฆฟ์๋ฅผ ๋ํด์ฃผ๋ฉด์ k๊ฐ ํฌํจ๋๋ ๋ฒ์๋ฅผ ์ฐพ๊ณ total๊ณผ k๊ฐ ๊ฐ์์ง๋ ์์ ์ ์ซ์๋ฅผ ์ถ๋ ฅ
1์ ์๋ฆฌ์ ๊ฒฝ์ฐ k๊ฐ n๋ณด๋ค ํฌ๋ค๋ฉด -1, ๊ทธ๋ ์ง ์๋ค๋ฉด k๋ฅผ ์ถ๋ ฅํ๊ฒ ๋ฐ๋ก ๋นผ์ฃผ์๋ค.
โ์ฒซ๋ฒ์งธ~์ธ๋ฒ์งธ ์ ์ถ(6%์์ ํ๋ ธ์ต๋๋ค.)
ํ์ด ๋ฐฉ๋ฒ๋๋ก ๊ตฌํํ๋๋ฐ ๋๋ฒ์งธ ๋ฐ๋ณต๋ฌธ์์ k์ ๋ฒ์๋ฅผ ํ์ธํ ๋์ total์ ํด๋น ์๋ฆฟ์๋งํผ ๋ํด์ฃผ๋ ์์์ ํ์ฌ ์๋ฆฟ์๊ฐ ์๋ ์ ๋ ฅ๋ฐ์ n์ ์๋ฆฟ์๋ฅผ ๋ํด์ค์ ํ๋ ธ์๋ค...ใ
โญ๏ธ๋ค๋ฒ์งธ ์ ์ถ(๋ง์์ต๋๋ค!!)
๋ง์ถ๊ธด ํ๋๋ฐ ์๊ฐ์ด 1052ms~1053ms๊ฐ ๋ด๋ค...
๋ค๋ฅธ ์ฌ๋์ 0ms์ ๋๋ถ๋ถ ํ์๊ธธ๋ ์กฐ๊ธ๋ง ๋ ์๊ฐํด๋ณด๊ธฐ๋ก ํ๋ค.
๐ก๋๋ฒ์งธ ์์ด๋์ด
๋ญ๊ฐ n์์ k๊ฐ ํด๋น๋๋ ์๋ฆฟ์-1๊น์ง์ ์ซ์์ ๊ฐ์๋ฅผ ๋นผ๋ณด๋ฉด ๋ญ๊ฐ ๊ตฌํ ์ ์์ ๊ฒ ๊ฐ์๋ค!
n-total๋ฅผ ํด์ ์๋ฆฟ์๋ก ๋๋๊ณ , ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ค.
๋ชซ์ ํด๋น ์๋ฆฟ์์ ์ต์๊ฐ(ex. 2์๋ฆฌ์ธ ๊ฒฝ์ฐ 10)์ +๋ชซ๋งํผ ํด์คฌ์ ๋ k ๋ฒ์์ ํด๋นํ๋ ์ซ์๊ฐ ๋์๋ค.
๋๋จธ์ง๋ k ๋ฒ์์ ํด๋นํ๋ ์ซ์์ ๋ช๋ฒ์งธ ์๋ฆฌ๊ฐ k์ธ์ง๋ฅผ ๋ํ๋ด์ฃผ์๋ค.
โ์ฌ์ฏ๋ฒ์งธ~์ผ๊ณฑ๋ฒ์งธ ์ ์ถ(6%์์ ํ๋ ธ์ต๋๋ค.)
๊ตฌํํ๋๋ฐ์ ๋งํ๋ฒ๋ ธ๋ฐ๐
ํด์ผํ ์ผ์ด ์ฐ๋๋ฏธ๋ผ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ๋ค. ๋๋ ์์ด๋์ด๋ ๊ฐ์ ๊ฑฐ ๊ฐ์๋ฐ...
โญ๏ธ์ฌ๋๋ฒ์งธ ์ ์ถ(๋ง์์ต๋๋ค!!)
์์ผ๋ก ๋ฌธ์ ํธ๋ ์ฐ์ต์ ๋ ๋ง์ด ํด์ผ ํ ๊ฒ ๊ฐ๋ค. ์ด ์ค๋ ฅ์ผ๋ก ๋ค์ ํ๊ธฐ ์๊ณ ๋ฆฌ์ฆ๋ ํ๋ค๋ฏ^^;;
์๋๋ ์ฒซ๋ฒ์งธ ์์ด๋์ด๋ก ์ ์ถํ ์ฝ๋์ด๋ค.
//
// Created by ๊น์ ๋ฆฌ on 2022/07/11.
//
#include <iostream>
#include <math.h>
using namespace std;
long long n, k;
long long total;
int main() {
cin.tie(NULL);
ios::sync_with_stdio(false);
cin >> n >> k;
string str = to_string(n);
long long i;
for (i = 1; i <= str.size(); i++) {
if (total < k && total + i * ((long long) pow(10, i) - (long long) pow(10, i - 1)) >= k) {
break;
} else {
total += i * ((long long) pow(10, i) - (long long) pow(10, i - 1));
}
}
if (total == 0) {
if (k > n) {
cout << -1;
} else {
cout << k;
}
return 0;
}
for (int j = pow(10, i - 1); j <= n; j++) {
string num = to_string(j);
if (total < k && total + num.size() >= k) {
for (int l = 0; l < num.size(); l++) {
total++;
if (total == k) {
cout << num[l];
return 0;
}
}
} else {
total = total + num.size();
}
}
cout << -1;
return 0;
}
'๋ฐฑ์ค > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/C++] 1753๋ฒ ์ต๋จ๊ฒฝ๋ก (0) | 2022.07.15 |
---|---|
[๋ฐฑ์ค/C++] 14888๋ฒ ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (0) | 2022.07.13 |
[๋ฐฑ์ค/C++] 16936๋ฒ ๋3๊ณฑ2 (0) | 2022.07.10 |
[๋ฐฑ์ค/C++] 15558๋ฒ ์ ํ ๊ฒ์ (0) | 2022.07.07 |
[๋ฐฑ์ค/C++] 25212๋ฒ ์กฐ๊ฐ ์ผ์ดํฌ (0) | 2022.07.03 |