记录编号 |
42755 |
评测结果 |
AAAAAAAAAA |
题目名称 |
求和问题 |
最终得分 |
100 |
用户昵称 |
htwc |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.853 s |
提交时间 |
2012-09-28 21:53:52 |
内存使用 |
1.69 MiB |
显示代码纯文本
#include <iostream>
#include <fstream>
#include <cstdio>
#define Len 41
using namespace std;
struct Num
{
int a[Len];
void init(int k)
{
a[Len-1]=k%100000;
a[Len-2]=k/100000;
}
void operator +=(Num x)
{
int c=0,t;
int i;
for(i=Len-1;i>=0;i--)
{
t=a[i]+x.a[i]+c;
c=t/100000;
a[i]=t%100000;
}
}
Num operator -(Num x)
{
Num k;
k.init(0);
int c=0,t;
int i;
for(i=Len-1;i>=0;i--)
{
t=a[i]-x.a[i]-c;
if(t<0)t+=100000,c=1;
else c=0;
k.a[i]=t;
}
return k;
}
void print()
{
int i;
for(i=0;i<Len;i++)
{
if(a[i])break;
}
if(i==Len){cout<<0<<endl;return;}
cout<<a[i++];
for(;i<Len;i++)
{
printf("%5.5d",a[i]);
}
cout<<endl;
}
}num[10005],r;
int main()
{
freopen("sum.in","r+",stdin);
freopen("sum.out","w+",stdout);
int n,m,k,p;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>k;
num[i].init(k);
num[i]+=num[i-1];
}
cin>>m;
for(int i=0;i<m;i++)
{
cin>>k>>p;
if(k==0){cout<<0<<endl;continue;}
r=num[p]-num[k-1];
r.print();
}
return 0;
}