C程序设计实践练习题目

1.题目描述
小明喜欢做a+b的算术,但是他经常忘记把末位对齐,再进行加,所以,经常会算错。比如12+13,他把12左移了1位,结果变成了133。小明已经算了一些等式,请计算一下他到底移动了多少位。

输入
第一行是一个整数K,表示样例的个数。以后每行一个样例,形如a+b=c, 1≤a,b≤1e4;0≤c≤1e9。

输出
每行输出一个样例的结果,以b为标准,a如果往左移n位,输出n,如果往右移n位,输出-n。测试数据保证一定有解,如果存在多个解,输出左移的结果。

样例输入
6
12+13=1213
12+13=1312
12+13=25
12+13=12013
12+13=133
12+13=142

样例输出
2
-2
0
3
1
-1
2.小明很喜欢做a+b,他但经常忘记进位,所以他算88+12=90,而不是100。现在你给了小明一些a+b的算式,请问他算出来会是什么?

输入
第一行是一个整数K,表示样例的个数。每个样例占一行,为两个整数a,b,0≤a,b≤1e9。

输出
每行输出一个样例的结果,不要输出前导0。

样例输入
3
1 2
5 6
55 55
3.题目描述
小明非常喜欢做a+b的算术题,为此他搜集了很多的练习题。今天他拿到一个很古老的练习册,上面是使用罗马数字表示的。小明不太擅长处理罗马数字,请你帮帮他,告诉他罗马数字对应的十进制数的值。罗马数字是使用字母组合表示数字的,不同的字母表示的值如下表: 字母 值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
表示规则如下:

数字的值是为所有字母的值的和。比如说II=2,XIII=13
没有0,比如207使用两个100,1个5,2个1表示,即CCVII
字母应该按值的降序从左到右排列,但为了避免太多的重复(比如IIII),使用减法来缩短式子
使用I在V和X前,表示4(IV)和9(IX)
使用X在L和C前,表示40(XL)和90(XC)
使用C在D和M前,表示400(CD)和900(CM)

输入
每行输入一个罗马数字,字符串长度不超过25。测试数据保证是合法的罗马数字。

输出
每行输出对应罗马数字的十进制整数。

样例输入
MM
CM
MCD
MDX
XCIX

样例输出
2000
900
1400
1510
99

4.题目描述
小明非常高兴你能帮他处理那些罗马数字,他想学着自己写罗马数字,但是他不知道自己到底写对了没有。请你帮他写个程序,能正确地将10进制数字转换成罗马数字,以便他能进行核对。罗马数字是使用字母组合表示数字的。不同的字母表示的值如下表: 字母 值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
表示规则如下:

数字的值是为所有字母的值的和。比如说II=2,XIII=13
没有0,比如207使用两个100,1个5,2个1表示,即CCVII
字母应该按值的降序从左到右排列,但为了避免太多的重复(比如IIII),使用减法来缩短式子
使用I在V和X前,表示4

(IV)和9(IX)
使用X在L和C前,表示40(XL)和90(XC)
使用C在D和M前,表示400(CD)和900(CM)

输入
每行输入一个整数n,1≤n≤10,000。

输出
每行输出对应十进制整数的罗马数字。

样例输入
1
2
3
4
9999
10000

样例输出
I
II
III
IV
MMMMMMMMMCMXCIX
MMMMMMMMMM

5.题目描述
WCB某天买了非常多的糖果并把它们分成N份,依次分别有1,2,3…,N个糖果。他想拿出其中的3份分给他的室友,为了不让室友们闹意见,必须让这三份的糖果总数恰好能被三人均分。请问他一共有多少种不同的组合方案数?

输入
有多组输入数据,每组输入非负整数N(3≤N≤106),如果N=0,表示输入结束,这个样例不需要处理。

输出
每组数据输出一个整数独占一行,表示共有多少种方案,由于可能会很大,最后结果对109+7取模。

样例输入
3
4
5
0

样例输出
1
2
4



相关文档
最新文档