99502024-03-20 23:54:42111Számlexikoncpp17Hibás válasz 0/100256ms2988 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

int E(int n,int k,int j,int l){
	int ans=0;
	while(j>0&&l>0&&k/l==n/j){
	L:
		k-=k/l*l;
		n-=n/j*j;
		l/=10;
		j/=10;
	}
	if(j==0||l>0&&k/l>n/j){
		return ans;
	}
	if(l==0){
		ans+=n+1;
		return ans;
	}
	ans+=(n/j-(l>0?k/l+1:0))*j;
	ans+=n%j+1;
	goto L;
}

int F(int k,int l,int o){
	int ans=0;
	while(true){
		if(l==0){
			ans+=o*10;
			break;
		}
		ans+=(10-(l>0?k/l+1:0))*o;
		k-=k/l*l;
		l/=10;
		o/=10;
	}
	return ans;
}

int H(int n,int k){
	if(n==0){
		return 0;
	}
	int j=1,o=1;
	while(j*10<=n){
		j*=10;
		o*=10;
		o++;
	}
	int l=1;
	while(l*10<=k){
		l*=10;
	}
	return E(n,k,j,l)+F(k,l,o/10);
}

signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
#ifdef CB
	freopen("be2.txt","r",stdin);
//	freopen("out.txt","w",stdout);
#endif
	int T;
	cin>>T;
	while(T--){
		int K,P;
		cin>>K>>P;
		int l=K,h=1e18;
		while(l!=h){
			int m=(l+h)/2;
			if(m-H(m,K)>=P){
				h=m;
			}
			else{
				l=m+1;
			}
		}
		cout<<(h-H(h,K)!=P?0:h)<<'\n';
	}
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/100
1Hibás válasz0/03ms1892 KiB
2Hibás válasz0/0158ms2248 KiB
3Hibás válasz0/103ms2332 KiB
4Hibás válasz0/103ms2416 KiB
5Hibás válasz0/104ms2388 KiB
6Hibás válasz0/103ms2388 KiB
7Hibás válasz0/104ms2520 KiB
8Hibás válasz0/104ms2636 KiB
9Időlimit túllépés0/10256ms2988 KiB
10Hibás válasz0/10178ms2868 KiB
11Hibás válasz0/10180ms2912 KiB
12Hibás válasz0/1059ms2900 KiB