cogs 36.求和問題
阿新 • • 發佈:2017-06-14
ios class sta print amp line getc 文件 連續
第二行有n個整數
第三行有一個整數m
下面m行,每行兩個整數i與j(i<=j),表示求和的起始和終止位置。 【輸出格式】
2 3 4 7 8 9 10 234
5
2 3
4 7
1 3
7 7
7 8
輸出文件 7
34
9
10
244 【數據規模】 對於40%的數據,n<=1000,m<=1000,數列中的數不超過32767,數列的和不超過10^9
對於70%的數據,n<=10000,m<=2*10^5,數列中的數不超過32767
對於100%的數據,n<=10000,m<=2*10^5,數列中的數不超過10^9
36. 求和問題
★ 輸入文件:sum.in
輸出文件:sum.out
簡單對比
時間限制:1.2 s 內存限制:128 MB
第二行有n個整數
第三行有一個整數m
下面m行,每行兩個整數i與j(i<=j),表示求和的起始和終止位置。 【輸出格式】
輸出有m行, 每行一個整數,表示這個數段數列的和。
【輸入樣例】 輸入文件 82 3 4 7 8 9 10 234
5
2 3
4 7
1 3
7 7
7 8
輸出文件 7
34
9
10
244 【數據規模】 對於40%的數據,n<=1000,m<=1000,數列中的數不超過32767,數列的和不超過10^9
對於70%的數據,n<=10000,m<=2*10^5,數列中的數不超過32767
對於100%的數據,n<=10000,m<=2*10^5,數列中的數不超過10^9
1#include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<algorithm> 5 #define ll long long 6 7 using namespace std; 8 const int N=10010; 9 10 ll a[N]; 11 ll sum[N]; 12 13 inline ll read() 14 { 15 ll x=0; 16 char c=getchar(); 17 while(c<‘0‘||c>‘9‘)c=getchar(); 18 while(c>=‘0‘&&c<=‘9‘)x=x*10+c-‘0‘,c=getchar(); 19 return x; 20 } 21 22 int main() 23 { 24 25 freopen("sum.in","r",stdin); 26 freopen("sum.out","w",stdout); 27 28 int n=read(); 29 30 a[1]=read(); 31 sum[1]=a[1]; 32 33 for(int i=2;i<=n;i++) 34 { 35 a[i]=read(); 36 sum[i]=sum[i-1]+a[i]; 37 } 38 39 int m=read(); 40 41 for(int i=1;i<=m;i++) 42 { 43 int start=read(); 44 int end=read(); 45 46 printf("%lld\n",sum[end]-sum[start-1]); 47 } 48 return 0; 49 }
cogs 36.求和問題