PersonalCorpus 版 (精华区)
1134075 Big Guava ... 10344 Accepted
0:00.010 64 2002/10/01 05:14:36.550
int a[5],b[5],res;
bool ok,used[5];
void tryit(int dep)
{
int save;
if (dep==5) {
if (res==23) ok=true;
return;
}
if (ok) return;
save=res;
res+=a[dep];
tryit(dep+1);
res=save;
res-=a[dep];
tryit(dep+1);
res=save;
res*=a[dep];
tryit(dep+1);
res=save;
}
void bijective()
{
int u,v,w,x,y;
for (u=0;u<5;u++) {
used[u]=true;
for (v=0;v<5;v++) if (!used[v]) {
used[v]=true;
for (w=0;w<5;w++) if (!used[w]) {
used[w]=true;
for (x=0;x<5;x++) if (!used[x]) {
used[x]=true;
for (y=0;y<5;y++) if (!used[y]) {
a[0]=b[u];
a[1]=b[v];
a[2]=b[w];
a[3]=b[x];
a[4]=b[y];
res=a[0];
tryit(1);
if (ok) return;
}
used[x]=false;
}
used[w]=false;
}
used[v]=false;
}
used[u]=false;
}
}
int readnum(int &i)
{
char ch;
i=0;
do {
scanf("%c",&ch);
} while (!isdigit(ch));
do {
i*=10;
i+=ch-48;
scanf("%c",&ch);
if (feof(stdin)) break;
} while (isdigit(ch));
return i;
}
void main()
{
#ifndef ONLINE_JUDGE
freopen("c:\\0acm\\uva\\i10344","r",stdin);
freopen("c:\\0acm\\uva\\o10344","w",stdout);
#endif
int i,j,k,n;
while (1) {
for (i=0;i<5;i++) readnum(a[i]);
if ((a[0]==0)&&(a[1]==0)&&(a[2]==0)&&(a[3]==0)&&(a[4]==0))
break;
memcpy(b,a,sizeof(a));
ok=false; memset(used,0,sizeof(used));
bijective();
if (ok) printf("Possible\n"); else printf("Impossible\n");
}
}
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.097毫秒