记录编号 42755 评测结果 AAAAAAAAAA
题目名称 求和问题 最终得分 100
用户昵称 Gravatarhtwc 是否通过 通过
代码语言 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;
}