XTU-oj-作业05
恭喜各位马上就能解锁较高难度oj题(手动狗头)
怀着紧张刺激的心情,我们开始本周的题解
A 平方数
这道题的解题思路比较简单,模拟一下寻找的过程就好,比如说集合A={2,3,4},则只有4=2*2,也就是我们需要一个一个元素的试,从第一个元素‘2’开始,2×2 与 2 相比,然后2×2与3相比、2×2与4相比,找出相等的数量;然后第二个元素3…
代码注释里面有注意事项
1 | /* |
B 整数分类
观察题目中的要求,发现是10^500,不用想,一般的定义肯定达不到这种要求,所以我们用数组存放。
代码注释里面有注意事项
1 | /* |
C 组合数
这道题有同学可能会想到的是运用Cn,m的公式去计算,如果没猜错的话,会超时。所以这边建议用杨辉三角的解题思路
1 | 1 |
观察可发现:(1)第一列和对角线上的元素都为1;
(2)除第一列和对角线上的元素之外,其他的元素的值均为前一行上的同列元素和前一列元素之和。
并且第n行就是:2^n的展开的数字(应该是中学的知识点,不再过多介绍)
所以我们根据杨辉三角去写代码,就可以避免计算Cn,m的时间
像这种将数据提前准备好,储存起来的思路叫做“打表”,这种方法会大大减小时间的使用,之后还会经常见到。
1 |
|
D 排序
这道题目考查对排序的理解,比较简单的有选择排序和冒泡排序这里推荐看一下这个博客八大排序算法(C语言实现)_2021dragon的博客-CSDN博客
1 |
|
E 素数个数
看到这道题,正常思路,输入n,m那就从n~m这个范围一个一个数字的试看看这个数字k(n<=k<=m)是否是素数,如果是那么就计一个。这种思路我们分析一下,在(n,m)区间有m-n+1个数字,每个数字k计算是否是素数需要计算根号k次,那么就有Σk^1/2次,是非常消耗时间的,那如何减少时间复杂度。
这里介绍一个算法:(挨筛,也叫素数表法)关于素数计算的算法总结 | DotedWood’s blog
1 |
|
F 日期
(小声bb:这道题,课本里面有一个相似的例题,有代码,看不懂的可以去看一眼课本)
根据我们的生活常识,每年的天数是不一样的,闰年:366天;平年:365天。这种区别与2月份的息息相关。
所以计算日期的时候就不得不考虑闰年和平年的区别了,闰年的计算:非整百年:能被4整除的为闰年。(如2004年就是闰年,2001年不是闰年);整百年:能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)
——科普结束
思路:将输入的当年当月份之前的所有天数(不包括输入的月份)相加,然后加上当月份的号。
1 |
|
G 三角形
代码注释里面有注意事项
这道题的思路就是找规律:
1 | 1 2 3 4 5 |
我们可以发现,从第二行开始,每一列的数都是她上一行和上一行右边一列之和,根据这个规律我们很轻松就能得到代码:
1 | /* |
H 湘潭大学
思路:找出分别有多少个’X’,’T’,’U’,根据“短板效应”,能组成多少个XTU和’X’,’T’,’U’三个里面最少的个数的那一个。所以输出个数最少的个数,就是最终答案
1 |
|
同学们,距离oj截至还有快两个月时间,一定要自己规划好计划!!!争取在截至之前刷完
革命尚未成功,同志仍需努力!
- 本文作者: Doted Wood
- 本文链接: http://example.com/2021/10/24/XTU oj/XTU-oj-作业05题解/
- 版权声明: 版权归博主所有,转载请说明来源