如果发现广告等破坏行为,请尽量将条目恢复到较早的版本而不是把相应内容直接删除,谢谢合作。

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;
}
个人工具