下午比赛之迷惑现象
  • 板块灌水区
  • 楼主fangzichang
  • 当前回复6
  • 已保存回复6
  • 发布时间2022/7/9 18:13
  • 上次更新2023/10/27 21:20:04
查看原帖
下午比赛之迷惑现象
678087
fangzichang楼主2022/7/9 18:13

蒟蒻逊,只会做第一题,推了两三个小时,总算对拍成功了——

WA!,小数据WA!大数据AC!真的是头一次见,,,

后来试图拿暴力骗走subtask1,结果——

人已经麻了,放一下代码,闲的话也许可以帮我看看(?)

#include<bits/stdc++.h>
#define uLL unsigned long long
//Hts is the Monkeys' King.
//马克思主义万岁 英特纳雄耐尔一定要实现
using namespace std;
const long long N=1e2+10;
uLL a;
long long n,b[N],ans[N],cnt;
inline bool check(int x)
{
	int a=0;
	while(x)
	{
		a=a*10+x%10;
		x/=10;
		//cout<<x<<"\n";
	}
	return a<=n; 
}
int main(){
//	freopen("1.in","r",stdin);
//	freopen("1.out","w",stdout);
	cin>>n;
	for(long long mmp=1;mmp<=n;mmp++){
		cnt=0;
		memset(b,0,sizeof(b));
		cin>>a;
		/*
		if(a<=1000)
		{
			int m=a;
			while(m--) cnt++,m/=10;
			uLL i;
			for(i=pow(10,cnt-1);;i++) {
				if(check(i))
				break;
			}
			printf("%lld\n",i-1);
			continue;
		}
//		*/
//		试图暴力骗小数据 
		long long aa=a;
		while(a){
			b[++cnt]=a%10;
			a/=10;
		}
		reverse(b+1,b+cnt+1);
		bool f=1;
		long long f1=0;
		for(long long i=1;i<=cnt;i++){
			if(b[i]==9&&f1==0) continue;
			else if(b[i]==0&&f1==0){
				f1=1;
			}
			else if(f1==1&&b[i]==0) continue;
			else{
				f1=-1;
				break;
			}
		}
		if(f1==1){
			cnt=0;
			memset(b,0,sizeof(b));
			aa--;
			while(aa){
				b[++cnt]=aa%10;
			aa/=10;
		}
		reverse(b+1,b+cnt+1);
		}
		if(b[1]==1){
			f=1;
			for(long long i=2;i<=cnt;i++){
				if(b[i]!=0) {
					f=0;
					break;
				}
			}
			if(f){
				cout<<a;
				continue;
			}
		}
		
		if(b[1]!=9){
			ans[1]=1;
			for(long long i=2;i<cnt;i++){
				ans[i]=0;
			}
			ans[cnt]=b[1];
			for(long long i=1;i<=cnt;i++){
				printf("%lld",ans[i]);
			}
			puts("");
		}
		else{
			long long sum=0,u;
			for(long long i=1;i<=cnt;i++){
				u=i;
				if(b[i]==9) sum++;
				else break;
			}
			if(sum==1){
				f=1;
				for(long long i=2;i<=cnt;i++){
					if(b[i]!=0){
						f=0;
						break;
					}
				}
				if(f){
					cout<<1;
					for(long long i=1;i<=cnt-2;i++){
						cout<<0;
					}
					puts("8");
					continue;
				}
			}
			if(sum==cnt){
				cout<<1;
				for(long long i=1;i<=cnt;i++) cout<<0;
				puts("");
				continue;
			}
			if(sum==cnt-1){
				cout<<b[cnt]+1;
				for(long long i=1;i<=cnt-2;i++){
					printf("9");
				}
				puts("8");
				continue;
			}
			else{
				printf("1");
				for(long long i=1;i<=cnt-sum-2;i++) printf("0");
				if(b[u]!=0&&b[u+1]==0){
					f=1;
					for(long long i=u+1;i<=cnt;i++){
						if(b[i]!=0){
							f=0;
							break;
						}
					}
					if(f==0)
					printf("%lld",b[u]+1);
					else printf("%lld",b[u]);
				} 
				else printf("%lld",b[u]+1);
				for(long long i=1;i<=sum-1;i++) printf("9");
				puts("8");
			}
			
		}
		}
	return 0;	
	}	

是的全都是特判(溜

2022/7/9 18:13
加载中...