Your Ride Is Here 你的飞碟在这儿

来源:互联网 发布:centos 7 ftp 编辑:程序博客网 时间:2024/04/29 14:00
看到这样一道题。
题目(本来题目是有英文原文的,不过我的英语确实太屌丝了,所以直接看中文版的了):众所周知,在每一个彗星后都有一只UFO。这些UFO时常来收集地球上的忠诚支持者。不幸的是,他们的飞碟每次出行都只能带上一组支持者。因此,他们要用一种聪明的方案让这些小组提前知道谁会被彗星带走。他们为每个彗星起了一个名字,通过这些名字来决定这个小组是不是被带走的那个特定的小组(你认为是谁给这些彗星取的名字呢?)。关于如何搭配的细节会在下面告诉你;你的任务是写一个程序,通过小组名和彗星名来决定这个小组是否能被那颗彗星后面的UFO带走。

小组名和彗星名都以下列方式转换成一个数字:最终的数字就是名字中所有字母的积,其中“A”是1,“Z”是26。例如,“USACO”小组就是21*19*1*3*15=17955。如果小组的数字 mod 47等于彗星的数字mod 47,你就得告诉这个小组需要准备好被带走!(记住“a mod b”是a除以b的余数;34 mod 10等于4)

写出一个程序,读入彗星名和小组名并算出用上面的方案能否将两个名字搭配起来,如果能搭配,就输出“GO”,否则输出“STAY”。小组名和彗星名均是没有空格或标点的一串大写字母(不超过6个字母)。
前提:假设小组名和彗星名存储在文件中,每颗彗星的信息占一行,前为小组名,后为彗星名,中间以空格分隔。
方案:1.通过一个全局的string数组来存储从文件中解析的信息,每个存储单位存储文件中的一行
          2.通过全局变量来存储彗星的数目,也就是输入文件中的行数。
          3.通过istringstream来分隔字符串。
          4.小组名或彗星名转换成数字:product1 *= (s1[i] - 'A' + 1); product1%47;
代码:

#include <iostream>#include <string>#include <fstream>#include <sstream>using namespace std;string s[100];//存储输入文件的每一行int lineCount = 0;//有多少行void input(string infile){//打开输入文件并初始化s数组    ifstream in(infile.c_str());    if(!in){        cout << "open error" << endl;    }    string line;    int i = 0;    while(getline(in,line)){        s[i] = line;        lineCount++;        i++;    }    in.close();}void breakString(string s,string& s1,string& s2){//分割字符串    istringstream stream(s);    stream >> s1;//小组名    stream >> s2;//彗星名}bool goOrStay(string s1,string s2){    int product1 = 1;    int product2 = 1;    for(int i = 0; i < s1.length();i++){        product1 *= (s1[i] - 'A' + 1);//小组名数字    }    for(int i = 0; i < s2.length();i++){        product2 *= (s2[i] - 'A' + 1);//彗星名数字    }    if((product1%47) == (product2%47)){        return true;    }else{        return false;    }}int main(){    input("in.txt");    ofstream out("out.txt");    string s1;    string s2;   for(int i = 0; i < lineCount; i++){        breakString(s[i],s1,s2);        if(goOrStay(s1,s2)){            out << "GO" << endl;        }else{            out << "STAY" << endl;        }    }    out.close();    return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 收入证明少500元怎么办 dnf二级输错了怎么办 如果受到法律的伤害怎么办 86岁了还怕死怎么办 风衣的腰带丢了怎么办 成为伪娘身上的毛怎么办 军官升不上去了怎么办 王者荣耀代练封号怎么办 cf淘宝代练封号怎么办 买音乐会的票过期怎么办 十年多年前被怨错拘留了怎么办 与室友关系闹僵怎么办 开庭后被告威胁我们证人怎么办 开车撞了豪车怎么办 我把人撞了全责怎么办 开车撞伤人没钱赔怎么办 开车撞伤无证驾驶人怎么办 开车把人撞伤了只买交强险怎么办 开车撞伤人赔不起怎么办 如果车撞死人了怎么办 给车撞了跑了怎么办 开车把人撞死了怎么办 开车把人蹭了怎么办 驾照被扣54分怎么办? 驾照被扣了12分怎么办 驾驶证丢失后被扣分怎么办 驾照扣了三十分怎么办 一次被扣了12分怎么办 驾照被扣35分后怎么办 我驾驶证扣了6分怎么办 c1驾照被扣6分怎么办 被扣了6分怎么办 今年扣了6分怎么办 驾照分不够扣了怎么办 被扣6分怎么办罚款15 驾照分数扣36分怎么办 驾照12分不够扣怎么办 驾照b证扣分了怎么办 违章18分不够扣怎么办 b2驾驶证扣11分怎么办 驾照一共扣30分怎么办