1~5题

2017-01-20  本文已影响0人  清一语

1001. 害死人不偿命的(3n+1)猜想 (15)

水题 ,没什么好讲的,应该一遍过 。


1002. 写出这个数 (20)


1003. 我要通过!(20)

关键是要看懂题目的意思。

  1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;
  2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
  3. 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a, b, c 均或者是空字符串,或者是仅由字母 A 组成的字符串。

首先,一定要看包括P,A,T三个字母,而且是以aPbATc 这样的形式,a,b,c 是由A组成的字符串或空字符串。
其次 ,由2可知,形如xPATx的字符串为正确,意思是PAT左右的字符串要相等,都为空字符串或同一长度的由A组成的字符串。
又有3可知 , P和T的中间每增加一个A,T的右边就会增加一个与P的左边一样的字符串 。 结合2 ,得出 T右边的A组成的字符串的长度是P左边的A组成的字符串长度的整数倍。
得出 ,在 aPbTc中 , 有c = ( b - 1 ) * a ,其中 a,b,c是字符串中A的个数 。


1004. 成绩排名 (20)

每个学生有成绩和学号,应该用结构体,每个学生和他的成绩和学号是整体。
学号和名字要存成字符数组,成绩要存成int型的。
先创建结构体。
struct Student { char name[10] ; char number[10] ; int score ; } ;
输入每个学生 ,每个学生的别名为p[i],存成一个数组,之后比较的时候会比较方便 。
scanf("%d",&n) ; // 学生人数 for ( i = 0 ; i < n ; i++){ struct Student p[i] ; scanf("%s",&p[i].name) ; scanf("%s",&p[i].number) ; scanf("%d",&p[i].score) ; }
比较成绩
for ( i = 0 ; i < n ; i ++){ for ( j = 0 ; j + i < n -1 ;j ++){ // 冒泡排序法 if ( p[j].score > p[j+1].score){ p[100] = p[j] ; // 利用p[100]作为中间变量,交换p[j]和p[j+1] p[j] = p[j+1] ; p[j+1] = p[100] ; } } }

讲真,我结构体不怎么会,这题是朱承浩写的。


1005. 继续(3n+1)猜想 (25)

这题用python写比较爽,用c语言的话,我比较无力。
n = input() b = raw_input() k = b.split() a = [int(i) for i in k] res = [int(i) for i in k] // 两个相同的,深拷贝 for c in a : while c != 1 : if c % 2 == 0 : c = c / 2 if c in a : // 不能是 if c in res ,即使res 和a 中的元素一样 res.remove(c) // 不能删除a中的c元素 else : pass else : c = (3*c+1)/2 if c in a : res.remove(c) else : pass res.sort(reverse = True) for i in res : print i,
不知道该怎么讲,自己感受一下吧 。

上一篇下一篇

猜你喜欢

热点阅读