XTU-oj-作业12-2015年期末
这套题命名很有意思,A题题目是A开头,B题题目是B开头…这件事告诉我们要在痛苦中找寻美(手动狗头保命)。
A Alice and Bob
emmmmm,按照规律来
1 |
|
B Buying Gifts
这道题目的话,就是按从小到大的顺序选择n个,但要注意选择的是差值最小的n个,那么肯定是在输入序列中连续的。那么我们先将输入的序列从小到大排列,然后以连续的n个数为一个序列的查找最小插值就好了。因为是差值相等选钱少,所以我们从后往前扫。
举个栗子:有10个要买5个,10个分别是19、13、12、11、10、9、7、5、4、3。我们先选择后五个9、7、5、4、3差值是6,然后我们在选10、9、7、5、4差值是6,然后选11、10、9、7、5差值是6,然后是12、11、10、9、7差值是5,然后13、12、11、10、9差值是4,然后19、13、12、11、10差值是9,故我们选择差值是4的。
1 |
|
C Co-string
模拟一下查找的过程。详情看注释吧。
1 |
|
D Diamond
整体思路应该没问题,我稍微叙述一下我的代码吧。
分成了打印上下两部分,第一部分是第1行到第n行,第二部分是第n+1行到最后
有两个功能,第一个是输出x个空格(print1(x)),第二个是两个字符的对称输出。比如:’D’到’B’就是DCBCD
1 |
|
E Enquiry
对要搜索的队列开始搜索,如果如果发现不一样就加一。代码中用男女不同是每个元素相减,如果是同一性别就为0,不是就是7.
1 |
|
F Flawless Prime
模拟一下去最高位的过程,然后判断是不是素数就好,这里判断素数无需打表直接用暴力判断就好。注意前导零。
代码中我们用一个计数器cnt,如果每次去完最高位,满足没有前导零且是一个素数,那我们就将cnt++。最后如果计数器的值为n的位数-1就说明所有去高位的过程都满足上述两个条件,就输出Yes,否则输出No
注意:这里的n最大是10位需要开__int64。
1 |
|
G GCD
这道题中提到与6互素的个数。我们分析一下,6的因子是2和3,要和6互素也就是和6求公约数不能是2或3或6,也就是这个数不能被2或3或6整除。
我们之前接触过一道Alice and Bob的题目其中有提过一个数学知识,n与m取商得到的是1-n中能被m整除的个数。
应用这个知识点,再加上容斥原理(也就是取两个集合并集中元素的个数。举个例子,求集合A和集合B并集的元素个数,也就是|A|+|B|-|A∩B|)。对于这道题就是先求1到n中满足与6互素的个数,也就是n-(n中能被2整除的个数+n中能被3整除的个数-n中能被6整除的个数)。然后n到m中满足条件的个数就是用1到m的个数-(1到(n-1)的个数)。
1 |
|
H Homework
这是oj里面我最爱的一道题,没有之一。它和我一同见证了4点钟的湘大(不要问我为啥起的那么早,因为我没睡。也不要觉得我好菜,自信点我就是很菜),这道题对于你们来说是一道平平无奇的第八题,但对于我来说是满满的成就感……
好了废话不多说了…
这道题目所设计的内容就是你们平时分作业的计算公式,也就是为什么我们会提醒你们早做题。
这道题思路,我们首先创建两个结构体,一个储存输入的数据(student),一个储存最后要输出的数据(student2)。student里面有题号、学号、排名两个信息;student2里面有学号和排名(分数)两个信息。因为输入的数据是多条的所以我们用一个数组来储存多条信息,命名为all[],输出也是命名为zcj[]。
然后将每一次的输入存到all里面,并将输入的排名转化为单题分数,每次输入完后更新zcj的数据,更新时如果学号在前面出现过就把成绩加到相应的分数,如果没出现过,就把学号填入zcj数组。
在所有数据输入完之后,我们进行排序操作,先按排名得分排序,然后算分,之后再将统一分数的按学号排序。
1 |
|
- 本文作者: Doted Wood
- 本文链接: http://example.com/2021/12/23/XTU oj/XTU-oj-作业12/
- 版权声明: 版权归博主所有,转载请说明来源