QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#606980#8932. BingoUESTC_xxx#WA 0ms13968kbC++143.8kb2024-10-03 13:25:532024-10-03 13:25:56

Judging History

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

  • [2024-10-03 13:25:56]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:13968kb
  • [2024-10-03 13:25:53]
  • 提交

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;
}
bool Check(int l,int r){
	for(int i=1;i<=a[0]+1;++i)e[i]=0;
	e[1]=1;
	int flag=0;
	for(int i=1;i<=a[0];++i){
		e[i]+=a[i];
		if(e[i]>=10){
			e[i+1]+=1;
			e[i]-=10;
		}
		if(l<=i&&i<=r&&e[i]!=a[i])flag=1;
//		else break;
	}
	if(flag)return false;
	d[0]=a[0];
	for(int i=1;i<=a[0];++i){
		d[i]=e[i];
	}
//	cout<<"fff4\n"<<'\n';
//	Print(d);
	Cmp();
	return true;
}
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]&&i-c[0]<=20;++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;
		}
		else if(k>m){
			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;
			for(int j=c[0]+1;j<=a[0];++j)d[j]=0;
			d[c[0]+1]=1;d[d[0]+1]=0;
			for(int j=c[0]+1;j<=a[0];++j){
				d[j]+=a[j];
				d[j+1]+=d[j]/10;
				d[j]%=10;
			}
			if(d[d[0]+1])++d[0];
			Cmp2(b,d,b);
		}
		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];++i){
		if(k==m){
			if(Check(i-c[0]+1,i)&&!f[i-c[0]])return;
		}
		k=(k-a[i-c[0]+1])/10+a[i+1]*BB;
	}
	Cmp();
	return;
}
int main(){
	int T=read();
	while(T--)Solve();
	return 0;
}

詳細信息

Test #1:

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

input:

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

output:


13
10
251
1370
3

result:

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