改题面只有1改为0 。。
#include <cstring>
#include <cstdio> inline void read(int &x)
{
x=; register char ch=getchar();
for(; ch>''||ch<''; ) ch=getchar();
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
} const int N();
int n,len,num[N],cnt[N];
char s[N]; inline bool work_1_2()
{
int sum=,l=,r=len;
if(len!=n) return ;
for(int i=len; i; --i)
cnt[i]=cnt[i+]+num[i],sum+=(num[i])*i;
if(sum%(len+)==)
{
for(int i=; i<=len; ++i)
printf("%d",num[i]);
puts(""); return ;
}
for(int l=; l<=n; ++l)
{
if(num[l])
{
if((sum-l)%(n+)==)
{
num[l]=;
for(int i=; i<=n; ++i) printf("%d",num[i]);
puts(""); return ;
}
}
}
if(num[n+>>]&&(sum-(n+>>))%(len+)==)
{
num[n+>>]=;
for(int i=; i<=len; ++i)
printf("%d",num[i]);
puts(""); return ;
}
return ;
}
inline bool work_3()
{
int sum=;
if(len>=n) return ;
for(int i=len; i; --i)
cnt[i]=cnt[i+]+num[i],sum+=num[i]*i;
for(int i=; i<=len; ++i)
{
if((sum+cnt[i])%(n+)==)
{
for(int j=; j<i; ++j) printf("%d",num[j]);
printf("");
for(int j=i; j<=len; ++j) printf("%d",num[j]);
puts(""); return ;
}
if((sum+cnt[i]+i)%(n+)==)
{
for(int j=; j<i; ++j) printf("%d",num[j]);
printf("");
for(int j=i; j<=len; ++j) printf("%d",num[j]);
puts(""); return ;
}
}
if(sum%(n+)==)
{
for(int i=; i<=len; ++i) printf("%d",num[i]);
printf("0\n"); return ;
}
if((sum+n)%(n+)==)
{
for(int i=; i<=len; ++i) printf("%d",num[i]);
printf("1\n"); return ;
}
return ;
}
inline bool work_4()
{
int sum=;
if(len<=n) return ;
for(int i=len; i; --i)
cnt[i]=cnt[i+]+num[i],sum+=num[i]*i;
for(int i=; i<=len; ++i)
{
if(!num[i]&&(sum-cnt[i])%(n+)==)
{
for(int j=; j<i; ++j) printf("%d",num[j]);
for(int j=i+; j<=len; ++j) printf("%d",num[j]);
puts(""); return ;
}
if(num[i]&&(sum-cnt[i]-i+)%(n+)==)
{
for(int j=; j<i; ++j) printf("%d",num[j]);
for(int j=i+; j<=len; ++j) printf("%d",num[j]);
puts(""); return ;
}
}
if((num[len]&&((sum-len)%(n+)==))||(!num[len]&&sum%(n+)==))
{
for(int i=; i<len; ++i)
printf("%d",num[i]);
puts(""); return ;
}
return ;
} int Presist()
{
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
read(n);
for(;scanf("%s",s+)!=EOF;)
{
len=strlen(s+);
for(int i=; i<=len; ++i)
num[i]=s[i]-'';
memset(cnt,,sizeof(cnt));
if(work_1_2()) continue;
memset(cnt,,sizeof(cnt));
if(work_3()) continue;
memset(cnt,,sizeof(cnt));
if(work_4()) continue;
puts("-1");
}
return ;
} int Aptal=Presist();
int main(int argc,char**argv){;}
AC
/*
呃呃呃
*/
未完成
C
c
/*
呃呃呃
*/
未完成