如果发现广告等破坏行为,请尽量将条目恢复到较早的版本而不是把相应内容直接删除,谢谢合作。
Code:USACO/ride/C
来自"NOCOW"
[编辑] 第一種解/The first solution
#include <stdio.h> #include <ctype.h> int hash(char *s) { int i, h; h = 1; for(i=0; s[i] && isalpha(s[i]); i++) h = ((s[i]-'A'+1)*h) % 47; return h; } void main(void) { FILE *in, *out; char comet[100], group[100]; /* bigger than necessary, room for newline */ in = fopen("ride.in", "r"); out = fopen("ride.out", "w"); fgets(comet, sizeof comet, in); fgets(group, sizeof group, in); if(hash(comet) == hash(group)) fprintf(out, "GO\n"); else fprintf(out, "STAY\n"); exit (0); }
[编辑] 第二種解/The second solution
#include <stdio.h> int main(){ FILE *fin =fopen("ride.in", "r"); FILE *fout=fopen("ride.out", "w"); char a[7],b[7]; //Need more room long i,ca=1,cb=1; //注意一定要使i提出,不可在if中定义、計數用的ca和cb/ca, cb for counting fscanf (fin, "%s %s",a,b); for (i=0;a[i];i++) ca*=a[i]-64; for (i=0;b[i];i++) cb*=b[i]-64; if (ca%47==cb%47)fprintf(fout,"GO\n"); else fprintf(fout,"STAY\n"); exit (0); }
[编辑] 第三種解/The third solution
#include<stdio.h> int main(){ char tmp[7],*ptmp; int p1=1,p2=1; freopen("ride.in","r",stdin); freopen("ride.out","w",stdout); for(ptmp=tmp,scanf("%s",tmp);*ptmp!='\0';p1*=*ptmp++-64); for(ptmp=tmp,scanf("%s",tmp);*ptmp!='\0';p2*=*ptmp++-64); printf(p1%47==p2%47?"GO\n":"STAY\n"); return 0; }

