Problem A:数字求和
Time Limit:1000MS Memory Limit:65536K
Total Submit:524 Accepted:102
Description
给定一个正整数A,以及另外的N个正整数,求在这N个整数中,小于A的整数的和是多少。
Input
第一行包含一个整数T (0 < T < 50),表示需要处理的测试数据的组数。
每组测试数据输入包括两行:
第一行是A (0 < A < 100) 和N (0 < N < 100) 两个正整数;
第二行是N个小于100的正整数。
Output
输出一行,是N个数中小于A的数的和。
Sample Input
1
10 5
1 2 3 4 11
Sample Output
10
Problem B:鸡兔问题
Time Limit:1000MS Memory Limit:65536K
Total Submit:381 Accepted:84
Description
一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。
Input
第1行是测试数据的组数n (0 < n < 1000),后面跟着n行输入。每组测试数据占1行,每行一个正整数a (0 < a < 10^9)。
Output
输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开
如果没有满足要求的答案,则输出两个0。
Sample Input
2
3
20
Sample Output
0 0
5 10
Problem C:药品运输
Time Limit:1000MS Memory Limit:65536K
Total Submit:30 Accepted:3
Description
5.12大地震后,某灾区急需一批药品,现在有N种药品需要运往灾区,而我们的运输能力有限,现在仅有M辆运输车用来运输这批药品,已知不同的药品对灾区具有不同的作用(“作用”用一个整数表示其大小),不同的药品需要的运输力(必要的车辆运载力)不同,而不同的车辆也具有不同的运输力。同时,我们希望不同的药品用不同的车辆来运输(避免发生混淆)。
现在请你帮忙设计一方案,来使得运往灾区的药品对灾区的作用最大。
Input
第一行包含一个整数T,表示需要处理的测试数据组数。每一组第一行包括两个整数N,M,分别表示药品总数,及车辆总数。接着第二行包含N个整数(pi<=10000),分别表示每种药品的作用。接着第三行包含N个整数,分别表示每种药品必须得运载力(wi<=1000)。接着第四行包含M个整数,表示每辆车的运输力(c<=1000);(T<=10; N,M<=1000)
Output
输出包括T行,每行仅一个整数,表示最大的作用值。
Sample Input
1
1 1
10
3
7
Sample Output
10
Problem D:四边形的面积
Time Limit:1000MS Memory Limit:65536K
Total Submit:289 Accepted:61
Description
如果已知四边形的四个顶点坐标,你能计算出它的面积吗?
Input
第一行输入一个整数T,表示有多少个四边形需要你计算。接着T行,每行输入8个整数,表示四边形的4个顶点坐标,x1,y1,x2,y2,x3,y3,x4,y4。坐标按顺时针输入.( T<=10;
-1000<=x1,x2,x3,x4,y1,y2,y3,y4<=1000; )
Output
输出包括T行,每行输出一个double型值,表示四边形的面积,保留三位小数。
Sample Input
1
0 0 0 1 1 1 1 0
Sample Output
1.000
Problem E:0,2表示法
Time Limit:1000MS Memory Limit:65536K
Total Submit:7 Accepted:0
Description
任何一个正整数都可以用2的幂次方表示.
例如:137=2^7+2^3+2^0
同时约定次方用括号来表示,即a^b可表示为a(b)
由此可知,137可表示为:2(7)+2(3)+2(0)
进一步:7=2^2+2+2^0(2^1用2表示) 3=2+2^0
所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0)
又如:1315=2^10+2^8+2^5+2+1
所以1315最后可表示为:2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
Input
输入包括多组测试数据。
每组测试数据占一行,包含一个整数N (0 < N < 10^60)。
N=0表示输入结束。
Output
对于每组测试数据,输出符合约定的N的0,2表示(在表示中不能有空格)。
Sample Input
137
1315
0
Sample Output
2(2(2)+2+2(0))+2(2+2(0))+2(0)
2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
Problem F:回文数
Time Limit:1000MS Memory Limit:65536K
Total Submit:12 Accepted:1
Description
若一个数(首位不为零)从左向右读与从右向左读都是一样,我们就将其称之为回文数。例如:给定一个 10进制数 56,将 56加 65(即把56从右向左读),得到 121是一个回文数。
又如,对于10进制数87:
STEPl: 87+78= 165 STEP2: 165+561= 726
STEP3: 726+627=1353 STEP4:1353+3531=4884
在这里的一步是指进行了一次N进制的加法,上例最少用了4步得到回文数4884。
写一个程序,给定一个N(2<N<=16,高于10进制的用A-F表示)进制数M.求最少经过几步可以得到回文数。
Input
第1行是测试数据的组数T(0<T<100),后面跟着T组测试数据。每组测试数据占1行,包括两个正整数N和M,用空格分开。
Output
对于每组测试数据,输出最少的步数;若在30步内(包括30步)得不到回文数,则输出“Impossible”(不包括双引号)。
Sample Input
2
10 56
9 87
Sample Output
1
6
Problem G:补兵
Time Limit:1000MS Memory Limit:65536K
Total Submit:5 Accepted:0
Description
在非常流行的DOTA游戏中,补兵是非常重要的一种技术统计。如果一个单位被对方的多个单位攻击至死,则对该单位造成最后一次(致命的)伤害的攻击者将会获得更多的奖励(金钱和经验),这名攻击者被记录一次补兵。
现在有N个人(编号为1、2、...、N)攻击对方的一个单位。假设每人每次攻击的伤害和每两次攻击之间的间隔都是固定的。输入将给出每个人两次攻击之间的间隔时间,并假设每个人第一次攻击的时刻值就是他的两次攻击之间的时间间隔值。例如,一个人攻击间隔为2,则他会在时刻2、4、6、8……进行攻击。时间以整数计算。
如果多个人同时攻击导致对方死亡,攻击伤害最大的那个被记录一次补兵。如果攻击
伤害最大的不止一个,则其中编号最小的人被记录一次补兵。
一个单位血量小于等于0就被判为死亡。
你的任务是求出对方单位死亡的时刻和被记录一次补兵的那个人的编号。
Input
输入的第一行包含一个整数M (1 < M ≤ 100),表示测试数据的组数。
每组数据第一行包含两个整数N (2 ≤ N ≤ 1000)和H (1 < H ≤ 1000000),表示攻击对方某个单位的人数和对方单位的血量。
接下来有N行,每行两个整数,分别表示每个人每次攻击的伤害A (1 ≤ A ≤ 100),以及每两次攻击之间的间隔T (1 ≤ T ≤ 100)。
Output
对每组数据,输出一行,对方单位死亡的时刻和被记录一次补兵的那个人的编号,用空格隔开。
Sample Input
2
2 10
2 2
3 3
2 10
5 3
2 10
Sample Output
6 2
6 1
Hint
输入数据较多,尽量用scanf和printf代替cin和cout。
Problem H:展览会
Time Limit:1000MS Memory Limit:65536K
Total Submit:39 Accepted:2
Description
某展览会参展总人数为n,每人在会场的停留时间为[xi, yi),倘若第i个人时刻t在场内,则有xi <= t < yi。求展览会会场中最多有多少人同时在场。
Input
输入包含多组测试数据,对于每组测试数据:
第一行为参展总人数n,1<=n<=1000。
第二行的n个数是这n个人的到达时间xi;
第三行的n个数是这n个人对应的离开时间yi。
其中xi,yi是不超过10^9的正整数。
n=0表示输入结束。
Output
对于每组测试数据,输出会场中最多有多少人同时在场。
Sample Input
4
3 2 6 2
9 5 8 6
Sample Output
3
Problem I:Cantor表
Time Limit:1000MS Memory Limit:65536K
Total Submit:76 Accepted:22
Description
现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:
1/1 1/2 1/3 1/4 1/5 ...
2/1 2/2 2/3 2/4 ...
3/1 3/2 3/3 ...
4/1 4/2 ...
5/1
我们以z字型给上表的每一项编号。第1项是1/1,然后是1/2,2/1,3/1,2/2...。
问题是,给定数字N(0 < N < 1000),输出第N项。
Input
输入包括多组测试数据。
每组测试数据占一行,包含一个整数N。
N=0表示输入结束。
Output
输出若干行,每行对应一组测试数据的结果。
Sample Input
1
2
0
Sample Output
1/1
1/2
Problem J:连通 OR 不连通
Time Limit:1000MS Memory Limit:65536K
Total Submit:6 Accepted:0
Description
给定一个无向图,一共n个点,请编写一个程序实现三种操作:
E x 从原图中删除连接x节点的所有边。
D x y 从原图中删除连接x,y节点的边。
Q x y 询问x,y节点是否连通。
Input
输入只有一组测试数据:
第一行两个数n,m(5<=n<=40000,1<=m<=100000)
接下来m行,每行一对整数 x y (x,y<=n),表示x,y之间有边相连。保证没有重复的边。
接下来一行一个整数 q(q<=100000)
以下q行每行一种操作,保证不会有非法删除。
Output
按询问次序输出所有Q操作的回答,连通的回答Yes,不连通的回答No。
Sample Input
3 3
1 2
1 3
2 3
5
Q 1 2
E 2
Q 1 3
D 3 1
Q 1 3
Sample Output
Yes
Yes
No
Hint
输入数据较多,尽量用scanf和printf代替cin和cout!
因篇幅问题不能全部显示,请点此查看更多更全内容