标签:任务 一点 == height src mod 没有 lock abs
对于一个字符串,已知全为大写字母,或者是小写字母,可以将其输入的值,每个减去对应的大(小)写的字母A(a)对应的ASCII码值,然而今天一天很迷这个ASCII码的减加。
总结一下有以下几个思路
一、用while语句,条件是getchar() != ‘\n‘
二、用scanf("%s",a)直接解,然而现阶段对应的问题是,如果在做%s之后,a的值是一大串字母对应的ASCII码表,而非我们所需要的单个的字母的ASCII码。
比较有趣的是这个CODEVS上的1508你的飞碟在这 这个题。
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int main() { char h[5],u[5]; int a , b; long long hans=1,uans=1; scanf("%s%s",h,u); for(a = 0 ; a < strlen(h) ;a++) { h[a] -= 64; hans *= h[a]; } for( a = 0 ; a < strlen(u) ; a ++) { u[a] -= 64; uans *= u[a]; } if((uans%47)==(hans%47)) cout<<"GO"; else cout<<"STAY"; }
题目描述 Description 众所周知,在每一个彗星后都有一只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个字母)。 输入描述 Input Description 第1行:一个长度为1到6的大写字母串,表示彗星的名字。 第2行:一个长度为1到6的大写字母串,表示队伍的名字。 输出描述 Output Description 仅一行,包括“GO”或“STAY”。 样例输入 Sample Input 【样例输入1】 COMETQ HVNGAT 【样例输入2】 ABSTAR USACO 样例输出 Sample Output 【样例输出1】 GO 【样例输出2】 STAY
第一个代码是网上搜的题解,很有趣的事是样例中有一组
COMETQ
HVNGAT
对应的输出值应该是GO
然而并不是,但是由于测试点中没有这个样例,所以很棒的A了
那随笔开头写的,对于处理字符串,就是用这种
scanf("%s%s",h,u); for(a = 0 ; a < strlen(h) ;a++) { h[a] -= 64; hans *= h[a]; }
已知题目输出的全为大写字母,要求A对应的值为1,故减去64即可
于是发奋图强,自己写了一遍,对于这个题解有些地方不是很喜欢,首先就是开始的用了C++的头文件,用了iostream,用了using namespace std 还是scanf输入,对于我这种对C++一窍不通的人简直尬爆了。(结果输出的是cout。。。。。)
其次是在最后,在之前讲快速乘法的时候,讲过取模运算,是的就是某个女装爱好者讲的,在这里题解是将( uans-hans ) % 47 ==0 通过这个来判断GO还是STAY,然而我将其改成了(uans%47)==(hans%47)莫名喜欢这种格式,自己写的就是直接在之前加了一个int q , int p ;q = uans % 47 ; p = hans % 47 ;虽然在快速乘法快速幂要取模的时候对代码的内存要求极其苛刻,然而这个只是一道很简单的题,所以就觉得还是写清楚一点好。
下面是自己的代码
1 #include<stdio.h> 2 #include<string.h> 3 char ch[10000] , c[11000]; 4 int a[1200]; 5 int main() 6 { 7 long long chsum = 1 , csum = 1 ; 8 scanf("%s%s",ch,c); 9 for(int i = 0 ; i < strlen(ch); i ++) 10 { 11 ch[i] -= 64 ; 12 chsum *= ch[i]; 13 } 14 for(int k = 0 ;k < strlen(c) ; k ++) 15 { 16 c[k] -= 64 ; 17 csum *= c[k]; 18 } 19 int q = chsum % 47 ; 20 int p = csum % 47 ; 21 if(q == p) 22 printf("GO"); 23 else printf("STAY"); 24 return 0 ; 25 }
第8行这个两个%s是开始没有想到的,忘记了是两个,以及最近特别喜欢设置变量监视,例如设置一个flag,if(flag) printf(*****)这种,因为感觉很装逼=。=
可能今天会再看一会再回家吧,那就等会再打卡,以及今天讲了函数,子程序的问题,但是题里却没有几个需要子程序=。=
看来还是太年轻了=。=
那是我愿意付诸一生的人,现在却没法拥有。
标签:任务 一点 == height src mod 没有 lock abs
原文地址:http://www.cnblogs.com/wahahaljy/p/6539001.html