最近準備把USACO上的題目做一做,計劃按照網站上的順序一路做下來,練練算法順便在部落格上記錄下解題的過程和代碼,希望能幫助到大家。
題意:有兩個輸入字元串(一個comet一個group),對每個字元串計算“乘積”(A代表1,Z代表26,單詞“AS”的乘積就是1*19=19)。然後将兩者都除以47,如果求得的餘數相同則輸出“GO”,否則“STAY”。
解題思路:很簡單,讀入,計算,兩者相減模47,為0則兩者餘數相同,否則不同。相應輸出“GO”或者“STAY”。
代碼:
/*
ID: zc.rene1
LANG: C
PROG: ride
*/
#include<stdio.h>
#include<string.h>
int main(void){
FILE *fin = fopen("ride.in", "r");
FILE *fout= fopen("ride.out", "w");
char comet[7];
char group[7];
int comet_product=1, group_product=1, i;
fscanf(fin, "%s", comet);
fscanf(fin, "%s", group);
for(i=0;i<strlen(comet);i++){
comet_product*=(comet[i]-'A'+1);
}
for(i=0;i<strlen(group);i++){
group_product*=(group[i]-'A'+1);
}
fprintf(fout, "%s\n", (comet_product-group_product)%47==0?"GO":"STAY");
return 0;
}