题意:

给出一个\(n(0 \leq n \leq 10^{12})\),问\(n\)个\(M\)形的折线最多可以把平面分成几部分。

分析:

很容易猜出来这种公式一定的关于\(n\)的一个二次多项式。
不妨设\(f(n)=an^2+bn+c\)。
结合样例我们可以列出\(3\)个方程:
\(f(0)=1,f(1)=2,f(2)=19\)
解出三个系数\(a,b,c\),然后用高精度做即可。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;typedef long long LL;const LL MOD = 1000000000;struct Big
{LL a[5];Big() { memset(a, 0, sizeof(a)); }Big(LL x) { memset(a, 0, sizeof(a)); a[1] = x / MOD; a[0] = x % MOD; }void read() {memset(a, 0, sizeof(a));LL x; scanf("%lld", &x);a[0] = x % MOD; a[1] = x / MOD;}Big operator + (const Big& t) const {Big ans;for(int i = 0; i < 5; i++) ans.a[i] = a[i];for(int i = 0; i < 5; i++) {ans.a[i] += t.a[i];int j = i;while(ans.a[j] >= MOD) {ans.a[j + 1] += ans.a[j] / MOD;ans.a[j++] %= MOD;}}return ans;}Big operator * (const Big& t) const {Big ans;for(int i = 0; i < 5; i++) {for(int j = 0; j < 5; j++) if(i + j < 5) {ans.a[i + j] += a[j] * t.a[i];int k = i + j;while(ans.a[k] >= MOD) {ans.a[k + 1] += ans.a[k] / MOD;ans.a[k++] %= MOD;}}}return ans;}Big operator - (const Big& t) const {Big ans;for(int i = 0; i < 5; i++) ans.a[i] = a[i];for(int i = 0; i < 5; i++) {int j = i + 1;if(ans.a[i] < t.a[i]) {while(!ans.a[j]) j++;ans.a[j]--;for(int k = j - 1; k > i; k--) ans.a[k] += MOD - 1;ans.a[i] += MOD;}ans.a[i] -= t.a[i];}return ans;}void output() {int i = 0;for(i = 4; i; i--) if(a[i]) break;printf("%lld", a[i]);for(int j = i - 1; j >= 0; j--) printf("%09lld", a[j]);printf("\n");}
};int main()
{int T; scanf("%d", &T);for(int kase = 1; kase <= T; kase++) {printf("Case #%d: ", kase);Big x; x.read();Big ans(1);ans = ans + (Big(8) * x * x);ans = ans - (Big(7) * x);ans.output();}return 0;
}

转载于:https://www.cnblogs.com/AOQNRMGYXLMV/p/5274412.html

HDU 5047 Sawtooth 高精度相关推荐

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

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

  2. hdu 1408(高精度)坑人嫩

    Problem Description 挂盐水的时候,如果滴起来有规律,先是滴一滴,停一下:然后滴二滴,停一下:再滴三滴,停一下-,现在有一个问题:这瓶盐水一共有VUL毫升,每一滴是D毫升,每一滴的速 ...

  3. hdu 1042 N! 高精度运算

    N!                                                                              Time Limit: 10000/50 ...

  4. 用c语言编写动态爱心树表白,程序员用HTML5制作的爱心树表白动画

    HTML代码如下: 程序员用HTML5制作的爱心树表白动画- 柯乐义 本页面采用HTML5技术,目前您的浏览器无法显示,请使用支持HTML5的浏览器查看本页. 亲爱的何文琪: 曾经, 有一份真挚的爱情 ...

  5. HDU 1047 Integer Inquiry( 高精度加法水 )

    链接:传送门 思路:高精度水题 /*************************************************************************> File ...

  6. Hdu 1753 大明A+B 高精度小数相加

    题意: 很长很长的小数相加.. 思路: 用1000长的数组处理两个小数..前500存整数..后500存小数..然后相应位相加.. 然后输出除去前导0和后面0的.. Tips: ※ strchr(cha ...

  7. HDU 1042 N!( 高精度乘法水 )

    链接:传送门 思路:高精度乘法板子题,高精度耗时又耗空间...... /**************************************************************** ...

  8. HDU - 大明A+B(高精度)

    http://acm.hdu.edu.cn/showproblem.php?pid=1753 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: ...

  9. HDU 1042 N!(高精度阶乘、大数乘法)

    N! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Subm ...

最新文章

  1. C++点操作符和箭头操作符
  2. 创建XNA Shooter游戏——挑战:用引擎编写自己的游戏
  3. Python地理可视化工具包 folium介绍
  4. vue 点击li 中的img 怎么不冒泡_Vue全解
  5. # 20155224 第十一周 课堂练习《计算后缀表达式的值》
  6. MCS:连续随机变量——Erlang分布
  7. ANDROID框架揭秘
  8. 如何搭建百度网盘目录搜索网站
  9. AD导入原理图库PCB库文件 最强原理图PCB库
  10. php关闭notice_屏蔽PHP默认设置中的Notice警告的方法
  11. Riverbed SteelHead 9.5.0
  12. 2021.1.6寒假打卡Day3
  13. 四海众联E350N水滴吸顶AP适配说明
  14. 微信小程序开发自学笔记 —— 九、微信开发者工具
  15. centOS7 单机 mysql 5.7.24 主从
  16. long long类型
  17. 神经网络系统的软件实现,人工智能神经网络系统
  18. 宋朝记载的超新星爆发和光速不变
  19. 微信小程序详解(4.运算符和列表渲染)
  20. c语言文件获取失败问题

热门文章

  1. usaco Number Triangles
  2. java 毫秒转时间字符串_java 时间字符串 转换 毫秒
  3. 消除左递归实验代码_「leetcode」108. 构造二叉搜索树【递归】【迭代】详解!
  4. linux部分基础命令总结,Linux 基础命令总结3
  5. 2008php多版本共存,lnmp安装多版本PHP共存的方法详解
  6. 打补丁要按顺序吗_通辽正地饲料丨喂猪吃料也要讲究先后顺序! 看看你做对了吗?...
  7. Awcing算法---区间合并
  8. 惠普硬盘安装linux,hp台式电脑原本是linux系统,如何安装win7系统
  9. vs2015编译linux源码,使用Visual Studio 2017(VS2017)编译OpenCC 1.0.4 (Open Chinese Convert)源代码...
  10. opencv数字图像处理(图像边缘)