Problem 1031 - 走楼梯
Time Limit
: 1000MS
Memory Limit
: 65536KB
Difficulty
:
Total Submit : 724 Accepted : 383 Special Judge : No
Total Submit : 724 Accepted : 383 Special Judge : No
Description
ZYF最喜欢的活动是走楼梯!所以他每次去实验室总会坐电梯随机到一个楼层,然后走楼梯到实验室所在的楼层,并为此得意不已。现在的问题来了,已经知道每两层楼之间的楼梯级数、ZYF坐电梯要到达的楼层、实验室所在楼层,那么ZYF每次得走多少级楼梯才能到达实验室?
Input
输入数据的第一行是一个正整数T(0<T≤100),表示有T组测试数据。
每组测试数据有两行:第一行为三个整数N, A, B(0<N≤100, 0<A, B≤N),表示有N层楼,ZYF坐电梯到的楼层A,实验室所在楼层为B;第二行包括N–1个整数,其中第i个整数代表从第i层到第i + 1层之间的楼梯级数Si(0<Si≤100)。
每组测试数据有两行:第一行为三个整数N, A, B(0<N≤100, 0<A, B≤N),表示有N层楼,ZYF坐电梯到的楼层A,实验室所在楼层为B;第二行包括N–1个整数,其中第i个整数代表从第i层到第i + 1层之间的楼梯级数Si(0<Si≤100)。
Output
对于每组测试数据,在一行上输出一个整数P,表示ZYF到实验室所在楼层需要走P级楼梯。
Sample Input
3
6 1 5
10 10 10 10 10
6 5 1
10 10 10 10 10
10 3 7
1 2 3 4 5 6 7 8 9
6 1 5
10 10 10 10 10
6 5 1
10 10 10 10 10
10 3 7
1 2 3 4 5 6 7 8 9
Sample Output
40
40
18
40
18
Hint
Source
8th Xidian University Collegiate Programming Contest(2010.6)
#include<stdio.h>
int
d[
1024
];
int
main()
{
int
T,N,A,B,i;
scanf(
"
%d
"
,&
T);
while
(T--
)
{
scanf(
"
%d%d%d
"
,&N,&A,&
B);
for
(i=
1
;i<N;i++) scanf(
"
%d
"
,&
d[i]);
if
(A==B) printf(
"
0\n
"
);
else
if
(A>
B)
{
int
ans=
0
;
while
(A>
B)
{
ans
+=d[A-
1
];
A
--
;
}
printf(
"
%d\n
"
,ans);
}
else
{
int
ans=
0
;
while
(A<
B)
{
ans
+=
d[A];
A
++
;
}
printf(
"
%d\n
"
,ans);
}
}
return
0
;
}

