题意:给定一个k,问由012356789组成的数字第k大的是多少
#include<bits/stdc++.h> using namespace std; typedef long long ll; #define endl "\n" /* 思路:k代表在2没有出现4的数字中,第k大的数 十进制表示由“0123456789”这九个数组成的数中第x大的数 例如13代表由“0123456789”组成的数中(不包括0)第13大的数 那么这题k代表由"012356789"组成的数中第k大的数 将k由十进制转换成特殊的九进制(012356789)就是对应的由012356789组成的第k大的数 例子:求由01组成的第3大的数 将3转换成二进制那么答案就是11(01 10 11) */ int main() { ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); int T = 1; cin >> T; while (T--) { ll k; cin >> k; vector<int>vec; while (k) { vec.push_back(k % 9); k /= 9; } reverse(vec.begin(), vec.end()); for (auto i : vec) { if (i < 4)cout << i; else cout << i + 1; } cout << endl; } return 0; }
标签:012356789,863,cin,Codeforces,vec,Div,组成,数中 From: https://www.cnblogs.com/zhujio/p/17365204.html