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

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;
}
是的全都是特判(溜