★Your Ride Is Here 你要乘坐的飞碟在这里 一个众所周知的事实,在每一彗星后面是一个不明飞行物UFO. 这些不明飞行物时常来收集来自在 地球上忠诚的支持者. 不幸地,他们的空间在每次旅行只能带上一群支持者. 他们要做的是用一种 聪明的方案让每一个团体人被彗星带走. 他们为每个彗星起了一个名字,通过这些名字来决定一个 团体是不是特定的彗星带走. 那个相配方案的细节在下面被给出; 你的工作要写一个程序来通过团体的名字和彗星的名字来决定一个组是否应该与在那一颗彗星后 面的不明飞行物搭配. 团体的名字和彗星的名字都以下列各项方式转换成一个数字: 这个最后的数字代表名字中所有字 母的信息,"A" 是 1 和 "Z" 是 26. 举例来说,团体 "USACO" 会是 21*19*1*3*15=17955 . 如果团体的数字 mod 47 等于彗星的数字 mod 47,那么你要告诉这个团体准备好被带走! 写一个程序读入彗星的名字和团体的名字,如果搭配打印"GO"否者打印"STAY" 团体的名字和彗星的名字将会是没有空格或标点的一串大写字母(不超过6 个字母), 如: Input Output COMETQ HVNGAT GO ABSTAR USACO STAY PROGRAM NAME: ride INPUT FORMAT 第 1 行: 彗星的名字(一个长度为1 到6 的字符串) 第 2 行: 团体的名字(一个长度为1 到6 的字符串) SAMPLE INPUT (file ride.in) COMETQ HVNGAT OUTPUT FORMAT 单独一行包含"STAR"或"GO". SAMPLE OUTPUT (file ride.out) GO
/* ID: china_l5 LANG: C TASK: ride */ #include<stdio.h> int main() { char a[7], b[7]; //分别用来存彗星的名字 和 团体的名字 int ca=1, cb=1, //分别用来存 名字转化过来的数字 int i; //临时变量 freopen("ride.in","r",stdin); //读文件 freopen("ride.out","w",stdout); scanf("%s",a); //读字符串 scanf("%s",b); for(i=0;a[i];i++) //转化为数字 ,在这里你需要掌握第一个技巧,如何将字符转化为数字,每一个字符都是用ASCII码存放的,比如‘A’对应的ASCII码为65,所以这里用了-64, ca*=a[i]-64; //当然也可以使用 a[i] - 'A'+1;(如果你忘记了'A'对应的ASCII码的话); for(i=0;b[i];i++) //a[i] 相当于 if(a[i]!='\0') 继续执行循环 cb*=b[i]-64; if(ca%47 == cb%47) //按题意进行比较 printf("GO\n"); //输出 else printf("STAY\n"); return 0; }
#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; }