蒟蒻求助50分

P1200 [USACO1.1] 你的飞碟在这儿 Your Ride Is Here

**有点小长,麻烦了**
by Uchiha_madara @ 2022-10-04 15:20:16


数组是从0到n-1为下标的,也就是你定义一个数组a[6],只有a[0],a[1],a[2]...,a[5],不含有a[6],所以要多定义一些比如定义成a[10] (多定义一些没有关系,太小了就不行了) ut和et没赋初始值,放int main()的括号外面就会变成0。 0乘任何数都得0,所以应该赋初始值为1 ------------ **最最重要的**,就是输入是1到6之间的长度,不是输入6个字符! (其实我一开始就发现了,但是我总觉得没有关系,导致卡了好久) ## #### 美国有个叫ASCLL码的东西用来存储字符的编号 比如 'A'的ASCLL码就是65,'a'是97. 你可以这样知道字母'a'的ASCLL码 ``` cout << int('A'); ``` 然后你就可以优化你的代码啦! ------------ ## 优化后的代码: ```cpp #include<bits/stdc++.h> using namespace std; char ufo[7],earth[7]; int u[7]={0,1,1,1,1,1,1},e[7]={0,1,1,1,1,1,1}; long long ut=1,et=1; int main(){ for(int i=1;i<=6;i++){ ufo[i] = getchar(); if(ufo[i]<'A'||ufo[i]>'Z')break;//不是A到Z的字符就说明读到换行符了,不读了 u[i] = ufo[i]- 'A' + 1;//+1是因为'A'-'A'=0,而你想要的'A'等于1 } getchar(); for(int i=1;i<=6;i++){ earth[i] = getchar(); if(earth[i]<'A'||earth[i]>'Z')break; e[i] = earth[i]-'A'+1; } for(int i=1;i<=6;i++){ ut*=u[i]; et*=e[i]; } if(ut%47==et%47){ cout<<"GO"; } else{ cout<<"STAY"; } return 0; } ``` ~~面目全非了,但是效率很高。~~ @[Uchiha_madara](/user/481542)
by WZRYWZWY @ 2022-10-04 16:07:59


谢谢大佬(本人刚学25天),菜出天际 求互关
by Uchiha_madara @ 2022-10-05 19:33:05


@[WZRYWZWY](/user/704668)
by Uchiha_madara @ 2022-10-05 19:33:42


已AC,蟹蟹 (验证码NBD3祭)
by Uchiha_madara @ 2022-10-05 19:34:59


|