题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5047

解题报告:问一个“M”型可以把一个矩形的平面最多分割成多少块。

输入是有n个“M",现在已经推出这个公式应该是8 * n^2 - 7 * n + 1,但是这个n的范围达到了10^12次方,只要平方一次就超出long long  的范围了,怎么办呢,用大数?

都试过了,很奇怪,会超时,按照估算的话感觉不会,可能是中间结果比较大吧,这个还在思考,但是10^12平方一次乘以八也只达到了10^25次方级别,所以我们可以用四个__int64来模拟这个结果,这样计算起来就快多了。每一个只存结果的相应的八位,为什么只存八位呢,因为中间要进行平方运算,8位平方以下还好,在long long 的承受范围之内,如果大一点超过long long 就不行了,中间计算的时候相乘就容易溢出,而八位也刚好方便计算。相乘的时候要将大数的对应的位上的long long 两两进行相乘。

还有最后输出结果要注意一点,不能直接输出,中间的数前导0也要输出来,不然看起来就好像少了几个0,反正中间结果用8位的固定格式输出就行了。

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdlib>
using namespace std;
typedef __int64 INT;
struct Big
{
INT d[];
Big()
{
memset(d,,sizeof(d));
}
void print()
{
int flag = ;
for(int i = ;i >= ;--i)
if(d[i] != && !flag)
{
printf("%I64d",d[i]);
flag = ;
}
else if(flag) printf("%08I64d",d[i]);
puts("");
}
};
Big operator * (Big a,Big b)
{
Big c;
INT flag = ;
for(int i = ;i < ;++i)
for(int j = ;j < ;++j)
{
INT temp = a.d[i] * b.d[j] + flag;
if(temp) c.d[i+j] += temp % ;
flag = temp / ;
}
return c;
}
Big operator - (Big a,Big b)
{
Big c;
for(int i = ;i < ;++i)
{
if(a.d[i] < b.d[i])
{
a.d[i+] -= ;
a.d[i] += ;
}
c.d[i] = a.d[i] - b.d[i];
}
return c;
}
Big operator + (Big a,Big b)
{
Big c;
INT flag = ;
for(int i = ;i < ;++i)
{
INT temp = a.d[i] + b.d[i] + flag;
c.d[i] = temp % ;
flag = temp / ;
}
return c;
}
Big valueof(INT x)
{
int f = ;
Big ans;
while(x)
{
ans.d[f++] = x % ;
x /= ;
}
return ans;
}
int main()
{
int T,kase = ;
INT a;
scanf("%d",&T);
while(T--)
{
scanf("%I64d",&a);
Big ans = valueof(a) * valueof(a);
ans = ans * valueof();
ans = ans - (valueof(a) * valueof());
ans = ans + valueof();
printf("Case #%d: ",kase++);
ans.print();
}
return ;
}

HDU 5047 Sawtooth(大数模拟)上海赛区网赛1006的更多相关文章

  1. 2014 网选 上海赛区 hdu 5047 Sawtooth

    题意:求n个'M'型的折线将一个平面分成的最多的面数! 思路:我们都知道n条直线将一个平面分成的最多平面数是 An = An-1 + n+1 也就是f(n) = (n*n + n +2)/2 对于一个 ...

  2. HDU 5047 Sawtooth(大数优化+递推公式)

    http://acm.hdu.edu.cn/showproblem.php?pid=5047 题目大意: 给n条样子像“m”的折线,求它们能把二维平面分成的面最多是多少. 解题思路: 我们发现直线1条 ...

  3. hdu 4023 2011上海赛区网络赛C 贪心+模拟

    以为是贪心,结果不是,2333 贪心最后对自己绝对有利的情况 点我 #include<cstdio> #include<iostream> #include<algori ...

  4. HDU 5038 Grade北京赛区网赛1005

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5038 解题报告:就是输入n个数w,定义s = 10000 - (100 - w)^2,问s出现频率最高 ...

  5. HDU 5047 Sawtooth 找规律+拆分乘

      Sawtooth Think about a plane: ● One straight line can divide a plane into two regions. ● Two lines ...

  6. hdu 4026 2011上海赛区网络赛F TSP ****

    没看过TSP,先mark //4838039 2011-10-27 23:04:15 Accepted 4026 2343MS 31044K 3143 B C++ Geners //状态压缩DP的TS ...

  7. hdu 4025 2011上海赛区网络赛E 压缩 ***

    直接T了,居然可以这么剪枝 题解链接:点我 #include<cstdio> #include<map> #include<cstring> #define ll ...

  8. hdu 4028 2011上海赛区网络赛H dp+map离散

    一开始用搜索直接超时,看题解会的 #include<iostream> #include<cstdio> #include<map> #include<cst ...

  9. hdu 4027 2011上海赛区网络赛G 线段树 成段平方根 ***

    不能直接使用成段增减的那种,因为一段和的平方根不等于平方根的和,直接记录是否为1,是1就不需要更新了 #include<cstdio> #include<iostream> # ...

随机推荐

  1. (转)雅虎工程师提供的css初始化示例代码

    body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,b ...

  2. 机器学习笔记----- ID3算法的python实战

    本文申明:本文原创,如有转载请申明.数据代码来自实验数据都是来自[美]Peter Harrington 写的<Machine Learning in Action>这本书,侵删. Hell ...

  3. easyUI datagrid view扩展

    //扩展easyuidatagrid无数据时显示界面 var emptyView = $.extend({}, $.fn.datagrid.defaults.view, { onAfterRender ...

  4. C#实现录制屏幕

    以前写过两篇录制麦克风语音和摄像头视频的文章(实现语音视频录制.在服务器端录制语音视频),最近有朋友问,如果要实现屏幕录制这样的功能,该怎么做了?实际上原理是差不多的,如果了解了我前面两篇文章中介绍的 ...

  5. gl_ClipDistance

    http://github.prideout.net/clip-planes/ http://www.opengl.org/wiki/Built-in_Variable_(GLSL) http://w ...

  6. ecshop 团购-》调取评论

    涉及到的文件及代码:lib_insert.php,comments.lbi,{insert name='comments' type=$type id=$id} html代码: <blockqu ...

  7. apt-get整理(草稿)

    1.apt-get这种方法下载的东西到哪了 参考网址:http://blog.csdn.net/magic881213/article/details/7692007 http://www.linux ...

  8. MIT Scheme 使用 Edwin

    MIT Scheme 的基本使用:http://www.math.pku.edu.cn/teachers/qiuzy/progtech/scheme/mit_scheme.htm 安装过程 安装bre ...

  9. 在Linux主机上搭建SVN,用于同步提交修改,实现本地提交线上预览(SVN Hook功能实现)

    原文地址: http://blog.csdn.net/ROVAST/article/details/44887707?ref=myread 注:上文中钩子使用中有错误,正确的使用如下,上文中忘记了up ...

  10. Java多线程编程核心技术---单例模式与多线程

    立即加载/饿汉模式 立即加载就是使用类的时候已经将对象创建完毕. public class MyObject { //立即加载方式==饿汉模式 private static MyObject myOb ...