- 论坛徽章:
- 5
|
我算的是19630次,
源程序:不过没做结构化也没有注释:
#include <stdio.h>
struct troche{
int k;
int count;
int number;
};
int out(struct troche *x);
int dump(struct troche *a,struct troche *b,struct troche *c);
int main()
{
struct troche a,b,c;
a.k=0;b.k=0;c.k=0;
a.count=0;b.count=0;c.count=0;
a.number=1997-19-97;b.number=97;c.number=19;
while(1){
if(0==a.number){
if((b.number<c.number)&&(0<b.number)){
out(&b);
}
if((c.number<=b.number)&&(0<c.number)){
out(&c);
}
}
if(0==b.number){
if((a.number<c.number)&&(0<b.number)){
out(&a);
}
if((c.number<=a.number)&&(0<a.number)){
out(&c);
}
}
if(0==c.number){
if((a.number<a.number)&&(0<a.number)){
out(&a);
}
if((b.number<=a.number)&&(0<b.number)){
out(&b);
}
}
if((0==a.number)&&(0==b.number)&&(0<c.number)){
out(&c);
}
/*
if((0==a.number)&&(0==c.number)&&(0<b.number)){
out(&b);
}
if((0==c.number)&&(0==b.number)&&(0<a.number)){
out(&a);
}*/
if((a.number<b.number)&&(a.number<c.number)&&(0<a.number)){
out(&a);
}
if((b.number<a.number)&&(b.number<c.number)&&(0<b.number)){
out(&b);
}
if((c.number<a.number)&&(c.number<b.number)&&(0<c.number)){
out(&c);
}
if((0==a.number)&&(0==b.number)&&(0==c.number)){
break;
}
if(c.number==0){dump(&a,&b,&c);}
if(b.number==0){dump(&a,&b,&c);}
if(a.number==0){dump(&a,&b,&c);}
printf("a=%d,b=%d,c=%d\n",a.number,b.number,c.number);
}
printf("sum=%d\n",a.count+b.count+c.count);
return(0);
}
int out(struct troche *x)
{
if((x->k)<=100){
x->count+=x->number;
}
x->number--;
printf("x.k=%d",x->k);
return(0);
}
int dump(struct troche *a,struct troche *b,struct troche *c)
{
printf("********************************");
if(0==(c->number)){
if(19<(b->number)) {
(c->number)+=19;(b->number)-=19;
b->k++;
c->k=b->k;
}else{
(c->number)+=19;(a->number)-=19;
a->k++;
c->k=a->k;
}
}
if(0==(b->number)){
if(97<(a->number)) {
(b->number)+=97;(a->number)-=97;
a->k++;
b->k=a->k;
}else{
return(0);
}
}
if(0==(a->number)){
return(0);
}
return(0);
} |
|