์ค์ด๋๋ ์ ์ฑ๊ณต
2 ์ด 128 MB 3158 1230 1012 41.188% ๋ฌธ์
์์ด ์๋ ์ ์๋ฅผ ์ญ์ง๋ฒ์ผ๋ก ํ๊ธฐํ์ ๋, ์ผ์ชฝ์์๋ถํฐ ์๋ฆฌ์๊ฐ ๊ฐ์ํ ๋, ๊ทธ ์๋ฅผ ์ค์ด๋๋ ์๋ผ๊ณ ํ๋ค. ์๋ฅผ ๋ค์ด, 321์ 950์ ์ค์ด๋๋ ์์ด๊ณ , 322์ 958์ ์๋๋ค.
N๋ฒ์งธ๋ก ์์ ์ค์ด๋๋ ์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋ง์ฝ ๊ทธ๋ฌํ ์๊ฐ ์์ ๋๋ -1์ ์ถ๋ ฅํ๋ค. ๊ฐ์ฅ ์์ ์ค์ด๋๋ ์๊ฐ 1๋ฒ์งธ ์์ ์ค์ด๋๋ ์์ด๋ค.
์ ๋ ฅ
N์ด ์ฃผ์ด์ง๋ค. N์ 1,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ N๋ฒ์งธ ์์ ์ค์ด๋๋ ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1 ๋ณต์ฌ
1
์์ ์ถ๋ ฅ 1 ๋ณต์ฌ
0
์์ ์ ๋ ฅ 2 ๋ณต์ฌ
19
์์ ์ถ๋ ฅ 2 ๋ณต์ฌ
42
์์ ์ ๋ ฅ 3 ๋ณต์ฌ
500000
์์ ์ถ๋ ฅ 3 ๋ณต์ฌ
-1โ
0~9๊ฐ์ ์นด๋๊ฐ ์๋ค๊ณ ํ์๋, ์ด ์นด๋๋ฅผ ์์์ ์๊ด์์ด ํน์ ํ ๊ฐ์๋งํผ ๋ฝ๋, ์กฐํฉ์ ๋ฌธ์ ์ด๋ค.
๋ชจ๋ ๋ ธ๋(0~9)๋ 1 ์๋๋ฉด 0์ด ๋ ์ ์์ผ๋ ๊ฒฝ์ฐ์์๋ 1024๊ฐ ์ด์ง๋ง, 0๊ฐ๋ฅผ ๋ฝ๋ ๊ฒฝ์ฐ์์๋ ์ด ๋ฌธ์ ์์ ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ -1๊ฐ๋ฅผ ํด์ฃผ์ด ์ด 1023๊ฐ์ด๋ค.
๊ฐ์๊ฐ ์ ์ผ๋ฏ๋ก ๋ชจ๋ ์กฐํฉ์ ํด๋นํ๋ ์ซ์๋ฅผ ์ ๋ถ ๊ตฌํด, ์ ๋ ฌํด์ฃผ๋ฉด ๋๋ค.
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
int N, arr[10];
vector<long long>v;
void func(int n, int l, int k){
if(n == k){
long long ans=0;
int p = 0;
for(int idx=0; idx<10; idx++){
if(arr[idx]){
ans += idx * pow(10, p);
p += 1;
}
}
v.push_back(ans);
return;
}
for(int i=l; i<10; i++){
if(arr[i]) continue;
arr[i] = 1;
func(n+1, i, k);
arr[i] = 0;
}
}
int main(){
cin>>N;
if(N > 1023){
cout<<-1;
return 0;
}
for(int i=1; i<=10; i++)
func(0,0,i);
sort(v.begin(), v.end());
cout<<v[N-1];
}