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

来源:互联网 发布:buy.apple mac china 编辑:程序博客网 时间:2024/04/29 15:02

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

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

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

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

#include <cstring>#include <cstdio>#include <algorithm>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);elseprintf("%I64d%06I64d\n",y,z);}else printf("%I64d%06I64d%06I64d\n",x,y,z);}return 0;}


0 0