我的代码在dev-c++上可以,但洛谷上不行 只显示“编译失败”,没有为什么 求助!!!
#include<bits/stdc++.h> using namespace std; int qp[10000000]={0,7,17,27,37,47,57,67,70,71,72,73,74,75,76,77,78,79,87,97}; int n,sum=19; int g[200010]; int sw[20]; bool flag1,flag2; bool pd(int i) { flag1=0; int s=i,m=0; while(s!=0) { sw[++m]=s%10; s/=10; if(sw[m]==7) { flag1=1; break; } } if(flag1==1) { //cout<<-1<<endl; flag2=1; return false; } for(int j=1;j<=i/2;j++) { if(j>=sum) break; if(i%qp[j]==0) { flag1=1; break; } } if(flag1==1) { flag2=0; //cout<<-1<<endl; return false; } return true; } int main() { //freopen("number.in","r",stdin); //freopen("number.out","w",stdout); for(int i=1;i<7;i++) { for(int j=1;j<20;j++) { qp[++sum]=i100+qp[j]; } } for(int i=700;i<800;i++) { qp[++sum]=i; } for(int i=8;i<10;i++) { for(int j=1;j<20;j++) { qp[++sum]=i100+qp[j]; } }
for(int i=1;i<7;i++)
{
for(int j=1;j<272;j++)
{
qp[++sum]=i*1000+qp[j];
}
}
for(int i=7000;i<8000;i++)
{
qp[++sum]=i;
}
for(int i=8;i<10;i++)
{
for(int j=1;j<272;j++)
{
qp[++sum]=i*1000+qp[j];
}
}
for(int i=1;i<7;i++)
{
for(int j=1;j<3440;j++)
{
qp[++sum]=i*10000+qp[j];
}
}
for(int i=70000;i<80000;i++)
{
qp[++sum]=i;
}
for(int i=8;i<10;i++)
{
for(int j=1;j<3440;j++)
{
qp[++sum]=i*10000+qp[j];
}
}//cout<<sum<<endl;
for(int i=1;i<7;i++)
{
for(int j=1;j<40952;j++)
{
qp[++sum]=i*100000+qp[j];
}
}
for(int i=700000;i<800000;i++)
{
qp[++sum]=i;
}
for(int i=8;i<10;i++)
{
for(int j=1;j<40952;j++)
{
qp[++sum]=i*100000+qp[j];
}
}
for(int i=1;i<7;i++)
{
for(int j=1;j<468560;j++)
{
qp[++sum]=i*1000000+qp[j];
}
}
/*
for(int i=1;i<=sum;i++)
{
cout<<qp[i]<<endl;
}*/
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%d",&g[i]);
if(g[i]<6)
{
printf("%d\n",g[i]+1);
continue;
}
if(g[i]==6)
{
printf("8\n");
continue;
}
//cout<<"YES"<<endl;
if(!pd(g[i]))
{printf("-1\n"); continue;}
//cout<<"YES"<<endl;
int s=g[i]+1,m=0;
while(s!=0)
{
sw[++m]=s%10;
s/=10;
}
//cout<<"YES"<<endl;
if(pd(g[i]+1))
{
printf("%d\n",g[i]+1);
continue;
}
//cout<<"YES"<<endl;
int ans=0;
for(int j=m;j>=1;j--)
{
if(sw[j]!=7)
{
ans+=sw[j]*pow(10,j-1);
}
else
{
ans+=8*pow(10,j-1);
break;
}
}
g[i]=ans;
//cout<<"YES"<<endl;
//cout<<g[i]<<endl;
while(true)
{
//cout<<"YES"<<endl;
if(pd(g[i]))
{
printf("%d\n",g[i]);
break;
}
g[i]++;
}
}
return 0; }