比赛 20120316 评测结果 TAAAAAAATA
题目名称 求和B 最终得分 80
用户昵称 TBK 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-03-16 22:02:59
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <iomanip>
using namespace std;
int a,b,c,d,e,r[100],l,m,n,k,s[100],t=0,z;
long long ac;
void zhuanhuan(int x,int y)
{
	while (x!=0)
	{
		r[k]=x%y;
		k++;
		x/=y;
	}
}
void zh(void)
{
	ac=0;
	int i;
	for (i=0;i<t;i++) 
		ac+=s[i]*(int)pow((double)d,(double)i);
}
int main(void)
{
	freopen ("sumb.in","r",stdin);
	freopen ("sumb.out","w",stdout);
	scanf("%d",&a);
	for (b=0;b<a;b++)
	{
		scanf("%d%d",&c,&d);
		for (e=0;e<t;e++) s[e]=0;
		t=0;
		for (e=0;e<c;e++)
		{
			scanf("%d%d",&l,&m);
			for (n=l;n<=m;n++)
			{
				for (z=0;z<k;z++) r[z]=0;
				k=0;
				zhuanhuan(n,d);
				if (k>t) t=k;
				for (z=0;z<t;z++) s[z]=(s[z]+r[z])%d;
			}
		}
		zh();
		printf("%lld\n",ac);
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}