2018级计科1、计科2、网工、信安班第14周竞赛题题解
前言#
本文中的题目做法仅供参考,不一定是最简单或是最正确的方法。
每题附的程序源码均在当时通过了OJ测试,但随着时间的推移也有可能失效。
作者水平有限,如有疏漏,在所难免,望留言指出。
A#
Problem A: Balloon Comes!
分情况处理,除法时注意判断一下能否整除即可。
1 |
|
B#
Problem B: 整数翻转
主要在于如何判断溢出,这里采用了开long long类型的变量,通过比较大小判断是否溢出。
1 |
|
C#
Problem C: 各位相加
按照题意模拟,把各个位上的数加起来,递归处理。
1 |
|
D#
Problem D: 整数转化为罗马数字
罗马数字看似复杂其实也有规律可循。
与普通数字一样可以按位处理。这里采用了常量字符串数组简化判断过程。
s[1]~s[9]对应罗马数字的1~9
s[11]~s[19]对应罗马数字的10~90
后面的以此类推。
注意0是没有对应的罗马数字的。
1 |
|
E#
显然移动k次和移动k%n次是一样的。
其实也不必真的移动数组中的元素,改变一下输出的顺序就行。
1 |
|
F#
Problem F: Zigzag表示
此题可以找规律发现输出字符串下标的关系。
具体过程就不在此细说了。
注意运算过程中下标不要越界了。
下面程序在字符串末尾添加了大量空格,避免了特殊处理越界情况。
1 |
|
C+#
这里给出C题另外一种做法,巧妙的利用了求余与数位的性质。
在此就不给出推导过程与证明了。
1 |
|
2018级计科1、计科2、网工、信安班第14周竞赛题题解