| 比赛 | 
    EYOI与SBOI开学欢乐赛11th | 
    评测结果 | 
    RRRRRRRRRR | 
    | 题目名称 | 
    WHZ 的数字 | 
    最终得分 | 
    0 | 
    | 用户昵称 | 
    HeSn | 
    运行时间 | 
    0.943 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    51.51 MiB  | 
    | 提交时间 | 
    2022-10-14 20:43:59 | 
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int MAXN = 2000010;
int n, k, a[MAXN], b[MAXN], c[MAXN];
signed main() {
    freopen("bzoj_1040.in", "r", stdin);
    freopen("bzoj_1040.out", "w", stdout);
	b[0] = 1;
	a[0] = 1;
	c[0] = -1;
	for(int i = 1; i < MAXN; i ++) {
		int x = i;
		while(x) {
			if(x % 10 == 0) {
				a[i] ++;
			}
			x /= 10;
		}
		b[i] = b[i - 1] + a[i];
		c[b[i]] = i;
	}
	while(cin >> n >> k) {
		if(n < MAXN) {
			cout << c[b[n] - k] + 1 << endl;
			continue;
		}
		int sum = 0;
		for(int i = n; i > 0; i --) {
			int x = i;
			while(x) {
				sum += (x % 10 == 0);
				x /= 10;
			}
			if(sum == k) {
				cout << i << endl;
				break;
			}
		}
		if(sum < k) {
			cout << 0 << endl;
		}
	}
	return 0;
}