题面描述
某一天, calfcamel 问二哥,有道数学题怎么做呀?二哥看了一下说我不会呀,于是二哥找到了你,请你帮他解决这个问题,这样二哥就可以鄙视 calfcamel 数学菜了。
给你一个长度为 n 的整数序列 a ,对该序列有 q 个查询,每次询问涉及序列中从 left 到 right 之间的数,包括 left 和 right ,请给出公式
的结果。即输出 [left, right] 这段区间中,第一个数乘以 1 ,第二个数乘以 2 ,第三个数乘以 3 ,……的和。
输入数据
输入数据的第一行为一个正整数 T ,表示有 T 组数据。对于每组数据:
第一行是一个整数 n(n <= 100000) ;
第二行有 n 个整数构成的序列 a ,其中每个数均在 0 到 100000 之间;
第三行为一个整数 q(0<q <=100000) ,表示询问的数目;
接下来 q 行中,每行为两个整数 left 和 right ,表示查询的区间。
输出数据
对于每一组数据,先单独输出一行 ”Case #x: ” , x 为当前组的编号,从 1 开始。
随后的 q 行中,每行输出对应查询的答案。
样例输入
2 |
样例输出
Case #1: |
提示
数据量比较大, C/C++ 请使用 scanf 读入,使用 cin 可能会超时,序列求和结果可能超出 32 位整数表达范围。
程序代码如下