比赛 20121107 评测结果 AAAAA
题目名称 三只小猪 最终得分 100
用户昵称 TBK 运行时间 0.029 s
代码语言 C++ 内存使用 3.16 MiB
提交时间 2012-11-07 10:19:31
显示代码纯文本
#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <set>
#include <queue>
#include <algorithm>
#define MAXN 0x7fffffff
using namespace std;
int a,b,c,d,p1,q1;
string str[51][51];
char ch;
void cheng(string &str1,string str2)
{
	int e,l,m,n,p,q,v[1001]={0},u[1000],w[1000],x,y,z;
	string stri;
	m=str1.length();
	n=str2.length();
	m--;
	n--;
	for (p=0;p<=m;p++)
		u[p]=(int)str1[m-p]-'0';
	for (p=0;p<=n;p++)
		w[p]=(int)str2[n-p]-'0';
	for (p=0;p<=m;p++)
		for (q=0;q<=n;q++)
		{
			x=u[p]*w[q];
			y=x/10;
			z=x%10;
			l=p+q;
			v[l]=v[l]+z;
			v[l+1]=v[l+1]+v[l]/10+y;
			v[l]=v[l]%10;
		}
	e=m+n;
	if (v[e+1]!=0) e++;
	for (;e>=0;e--)
		if (v[e]!=0) break;
	p=e;
	for (e=p;e>=0;e--) 
		stri+=(v[e]+'0');
	str1=stri;
}
void add(string &str1,string str2)
{
	int e,l,m,n,p,v[1001]={0},u[1000]={0},w[1000]={0};
	string stri;
	m=str1.length();
	n=str2.length();
	m--;
	n--;
	l=m>n?m:n;
	for (p=0;p<=m;p++)
		u[p]=(int)str1[m-p]-'0';
	for (p=0;p<=n;p++)
		w[p]=(int)str2[n-p]-'0';
	for (p=0;p<=l;p++)
	{
		v[p]+=u[p]+w[p];
		if (v[p]>=10)
		{
			v[p]-=10;
			v[p+1]++;
		}
	}
	if (v[l+1]!=0) l++;
	for (e=l;e>=0;e--) 
		stri+=(v[e]+'0');
	str1=stri;
}
int main(void)
{
    freopen("piggy.in","r",stdin);
    freopen("piggy.out","w",stdout);
	scanf("%d",&a);
	for (p1=1;p1<=50;p1++)
		for (q1=p1+1;q1<=50;q1++)
			str[p1][q1]+="0";
	for (p1=1;p1<=50;p1++)
		str[p1][1]+="1";
	for (p1=2;p1<=50;p1++)
		for (q1=2;q1<=p1;q1++)
		{
			ch=q1/10+'0';
			string st="\0";
			str[p1][q1]=str[p1-1][q1];
			if (ch!='0') st+=ch;
			ch=q1%10+'0';
			st+=ch;
			if (str[p1][q1]!="0") cheng(str[p1][q1],st);
			add(str[p1][q1],str[p1-1][q1-1]);
		}
	for (b=0;b<a;b++)
	{
		scanf("%d%d",&c,&d);
		cout<<str[c][d]<<endl;
	}
	fclose(stdin);
    fclose(stdout);
    return 0;
}