QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#607439#8932. BingoUESTC_xxx#WA 0ms14024kbC++143.6kb2024-10-03 14:56:152024-10-03 14:56:15

Judging History

你现在查看的是最新测评结果

  • [2024-10-03 14:56:15]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:14024kb
  • [2024-10-03 14:56:15]
  • 提交

answer

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<cstring>
#include<queue>
#include<map>
#define LL long long
using namespace std;
//const int mod=998244353;
int mod;
const int Base=23,Base2=27;
inline int lowbit(int x){return x&(-x);}
inline int Jia(int x){return x>=mod?x-mod:x;}
inline int Jian(int x){return x>=0?x:x+mod;}
int KSM(int a,int b){
	int Ans=1;
	while(b){
		if(b&1)Ans=1LL*Ans*a%mod;
		a=1LL*a*a%mod;
		b>>=1;
	}
	return Ans;
}
inline int read(){
	int k=0,ty=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){
		if(ch=='-')ty=-1;
		ch=getchar();
	}
	while(ch<='9'&&ch>='0'){
		k=k*10+ch-'0';
		ch=getchar();
	}
	return k*ty;
}
int gcd(int a,int b){
	if(!b)return a;
	return gcd(b,a%b);
}
const int maxn=3e6+5;
char s[maxn];
int a[maxn],b[maxn],c[maxn],d[maxn],e[maxn],f[maxn];
int n,m;
void Print(int* z){
	for(int i=z[0];i>=1;--i)cout<<z[i];
	cout<<'\n';
}
void Cmp2(int *a,int *b,int *c){
	int t=-1;
	if(a[0]>b[0])t=0;
	else if(a[0]<b[0])t=1;
	else {
		for(int i=a[0];i>=1;--i){
			if(a[i]!=b[i]){
				if(a[i]>b[i])t=0;
				else t=1;
				break;
			}
		}
	}
	if(t==0){
		c[0]=b[0];
		for(int i=1;i<=c[0];++i)c[i]=b[i];
	}
	else {
		c[0]=a[0];
		for(int i=1;i<=c[0];++i)c[i]=a[i];
	}
}
void Cmp(){
	int t=-1;
	if(b[0]>d[0]){
		t=0;
	}
	else if(b[0]<d[0])t=1;
	else {
		for(int i=b[0];i>=1;--i){
			if(b[i]>d[i]){
				t=0;
				break;
			}
			if(b[i]<d[i]){
				t=1;
				break;
			}
		}
	}
	if(t==0){
		for(int i=d[0];i>=1;--i)cout<<d[i];
		cout<<'\n';
	}
	else {
		for(int i=b[0];i>=1;--i)cout<<b[i];
		cout<<'\n';
	}
	return;
}
void Cal(int l,int r){
	for(int i=1;i<=a[0]+1;++i)e[i]=0;
	e[1]=1;
	for(int i=1;i<=a[0];++i){
		e[i]+=a[i];
		if(e[i]>=10){
			e[i+1]+=1;
			e[i]-=10;
		}
//		else break;
	}
	d[0]=a[0];
	for(int i=1;i<=a[0];++i){
		d[i]=e[i];
	}
	Cmp();
//	cout<<"fff4\n"<<'\n';
//	Print(d);
}
void Solve(){
	scanf("%s",s+1);
	m=read();n=strlen(s+1);
	a[0]=n;
	for(int i=1;i<=n;++i)a[i]=s[n-i+1]-'0';
	f[0]=1;
	for(int i=1;i<=n;++i)f[i]=(f[i-1]&&(a[i]==9));
	int k=0,flag=0;
	LL z=0;
	for(int i=1;i<=n;++i){
		if(!flag){
			z=z*10+a[n-i+1];
			if(z>=m){
				flag=1;
			}
		}
		k=(k*10+a[n-i+1])%m;
	}
	if(!flag){
		cout<<m<<'\n';
		return;
	}
//	cout<<"fff1\n";
	k=m-k;
	int kk=k;b[0]=0;
	while(kk){
		b[++b[0]]=kk%10;
		kk/=10;
	}
	kk=max(b[0],n);
	for(int i=b[0]+1;i<=kk+1;++i)b[i]=0;
	for(int i=n+1;i<=kk+1;++i)a[i]=0;
	for(int i=1;i<=kk;++i){
		b[i]+=a[i];
		b[i+1]+=b[i]/10;
		b[i]%=10;
	}
	if(b[kk+1])++kk;
	b[0]=kk;
//	Print(b);
	kk=m;c[0]=0;
	while(kk){
		c[++c[0]]=kk%10;
		kk/=10;
	}
	k=0;
	int BB=1;
	for(int i=c[0];i>=1;--i){
		k=k*10+a[i];
	}
//	cout<<k<<'\n';
	for(int i=1;i<c[0];++i)BB*=10;
	for(int i=c[0];i<=a[0]+1&&i-c[0]<=200;++i){
//		cout<<k<<'\n';
		if(k<m){
			for(int j=a[0];j>i;--j)d[j]=a[j];
			for(int j=c[0];j>=1;--j)d[i-c[0]+j]=c[j];
			for(int j=i-c[0];j>=1;--j)d[j]=0;
			d[0]=a[0];
//			cout<<"fff2\n";
//			Cmp();
//			return;
			Cmp2(b,d,b);
//			break;
		}
		k=(k-a[i-c[0]+1])/10+a[i+1]*BB;
	}
	k=0;
	for(int i=c[0];i>=1;--i){
		k=k*10+a[i];
	}
	for(int i=c[0];i<=a[0]+1;++i){
		if(k==m){
			if(!f[i-c[0]]){
				Cal(i-c[0]+1,i);
				return;
			}
		}
		k=(k-a[i-c[0]+1])/10+a[i+1]*BB;
	}
//	Print(b);
//	d[0]=a[0]+1;d[d[0]]=1;
//	for(int i=d[0]-1;i>=1;--i)d[i]=0;
//	for(int i=1;i<=c[0];++i)d[i]=c[i];
//	Print(d);
//	cout<<"fff3\n";
	for(int i=b[0];i>=1;--i)cout<<b[i];cout<<'\n';
	return;
}
int main(){
	int T=read();
	while(T--)Solve();
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 14024kb

input:

6
7 3
12 3
9 10
249 51
1369 37
2 1

output:

0
00
10
100
1370
0

result:

wrong answer 1st lines differ - expected: '9', found: '0'