【题解】 CF1835 合集

发布时间 2023-09-13 21:13:24作者: ricky_lin

CF1835A k-th equality

我们考虑因为题目上说:

Each input file has at most \(5\) test cases which do not satisfy \(A,B,C \leq 3\).

不满足 \(A,B,C \leq 3\) 的数据最多只有 \(5\)

所以说,我们可以枚举所有的 \(A\) 位数,然后每次减去可能的 \(B\) 位数的个数即可。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int NN = 10;
int t,a,b,c;
ll k;
ll l[NN] = {0,1,10,100,1000,10000,100000,1000000};
ll r[NN] = {0,9,99,999,9999,99999,999999,9999999};
 
int main(){
	scanf("%d",&t);
	while(t--){
		scanf("%d %d %d %lld",&a,&b,&c,&k);
		if(c != max(a,b) && c != max(a,b)+1) {puts("-1");continue;}
		ll ans = k;
		for(ll i = l[a]; i <= r[a]; ++i){
			ll lt = max(l[b],l[c] - i),rt = min(r[b],r[c] - i);
			if(lt > rt) rt = lt - 1;
			if(ans <= (rt - lt + 1)){
				printf("%lld + %lld = %lld\n",i,lt + ans - 1,(i + lt + ans - 1));
				ans = 0;
				break;
			}
			ans -= (rt - lt + 1);
		}
		if(ans > 0) puts("-1");
	}
}