Hdu 5047 Sawtooth (平面分割) (2014上海Online)

之前自己总结过类似问题,所以这个题看见之后就有了思考方向

平面分割问题小结 - 时雨晴天 - 博客园

最后推出公式,一看肯定超__int64,于是交给队友Java大数处理,结果TLE。。我重新换C语言用大数模板,然后继续TLE。。。。一看10万组case,果断将一个数拆成两个__int64然后乘,详见代码。

赛后有人说C语言大数开输入加速挂可以过。

#include 
#include 
#include 
using namespace std;


const __int64 mod=1000000;


int main ()
{
	int T;
	scanf("%d",&T);
	for (int Cas=1;Cas<=T;Cas++)
	{
		__int64 n,a,b,c,d;
		scanf("%I64d",&n);
		a=8*n+1;
		c=n-1;
		b=a%mod;
		a=a/mod;
		d=c%mod;
		c/=mod;

		__int64 x=a*c;
		__int64 y=a*d+b*c;
		__int64 z=b*d+2;
		y+=z/mod;
		z%=mod;
		x+=y/mod;
		y%=mod;
		printf("Case #%d: ",Cas);
		if (x==0)
		{
			if (y==0)
				printf("%I64d\n",z);
			else
				printf("%I64d%06I64d\n",y,z);
		}
		else 
			printf("%I64d%06I64d%06I64d\n",x,y,z);
	}
	return 0;
}


你可能感兴趣的:(ACM/ICPC,Regional)