题意:求n个'M'型的折线将一个平面分成的最多的面数!
思路:我们都知道n条直线将一个平面分成的最多平面数是 An = An-1 + n+1
也就是f(n) = (n*n + n +2)/2
对于一个'M'型的折线呢?它有四条线,但是由于三个顶点的关系导致划分的平面
的数目减少了9个!所以有递推公式 f(n) = (m*m + m + 2)/2 - 9*n; m = 4*n

最后 f(n) = (8*n+1)*(n-1)+2)
由于 n<=1e12 , 所以回报 long long!那么对于大于1e9的数我做了大数乘法的处理!

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5
 6 void fun(int a[], long long b, int &l){//将一个数进行拆分放到数组中!
 7     while(b){
 8         a[l++] = b%10;
 9         b/=10;
10     }
11 }
12
13
14 int a[30], b[30], c[30];
15 int la, lb;
16
17 void cal(){
18     memset(c, 0, sizeof(c));
19     for(int i=0; i<la; ++i)
20         for(int j=0; j<lb; ++j)
21             c[i+j] += a[i]*b[j];
22     int k=0;
23     int len = la+lb-1;
24     for(int i=0; i<len; ++i){
25         c[i]+=k;
26         k = c[i]/10;
27         c[i]%=10;
28     }
29     if(k>0) c[len++] = k;
30     k = 2;
31     for(int i=0; i<len; ++i){
32         c[i]+=k;
33         k = c[i]/10;
34         c[i]%=10;
35     }
36     if(k>0) c[len++] = k;
37
38     for(int i = len-1; i>=0; --i)
39         printf("%d", c[i]);
40     printf("\n");
41 }
42
43 int main(){
44     long long n;
45     int t, cnt=0;
46     scanf("%d", &t);
47     while(t--){
48         scanf("%I64d", &n);
49         printf("Case #%d: ", ++cnt);
50         if(n <= 1e9)
51             printf("%I64d\n", (8*n+1)*(n-1)+2);
52         else{
53             long long x = 8*n+1;
54             long long y = n-1;
55             la=lb=0;
56             fun(a, x, la);
57             fun(b, y, lb);
58             cal();
59         }
60      }
61     return 0;
62 }

本文转自 小眼儿 博客园博客,原文链接:http://www.cnblogs.com/hujunzheng/p/3997036.html,如需转载请自行联系原作者

2014 网选 上海赛区 hdu 5047 Sawtooth相关推荐

  1. 2014 网选 广州赛区 hdu 5025 Saving Tang Monk(bfs+四维数组记录状态)

    1 /* 2 这是我做过的一道新类型的搜索题!从来没想过用四维数组记录状态! 3 以前做过的都是用二维的!自己的四维还是太狭隘了..... 4 5 题意:悟空救师傅 ! 在救师父之前要先把所有的钥匙找 ...

  2. 2014 网选 广州赛区 hdu 5023 A Corrupt Mayor's Performance Art

    1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorith ...

  3. HDU 5047 Sawtooth 高精度

    题意: 给出一个\(n(0 \leq n \leq 10^{12})\),问\(n\)个\(M\)形的折线最多可以把平面分成几部分. 分析: 很容易猜出来这种公式一定的关于\(n\)的一个二次多项式. ...

  4. 2014 网选 5024 Wang Xifeng's Little Plot

    题意:从任意一个任意一个可走的点开始找一个最长的路,这条路如果有转弯的话, 那么必须是 90度,或者没有转弯! 思路: 首先用dfs将所有可走点开始的 8 个方向上的线段的最长长度求出来 ! step ...

  5. 2014 网选 5011 Game(Nim游戏,数学题)

    /*题意:Nim游戏! 思路:通过异或,判断将n个数表示成二进制的形式之后,是否对应位的数字1 的个数是偶数! */ #include<iostream> using namespace ...

  6. 2014 网选 5012 Dice(bfs模板)

    1 /* 2 题意:就是给定两个筛子,每个筛子上6个面,每个面的数字属于[1,6], 且互不相同! 3 问a筛子最少经过按照题目规定的要求转动,达到和b筛子上下左右前后的数字相同! 4 5 思路:很直 ...

  7. 2014 网选 5007 Post Robot(暴力或者AC_自动机(有点小题大作了))

    //暴力,从每一行的开始处开始寻找要查询的字符 #include<iostream> #include<cstdio> #include<cstring> #inc ...

  8. 2014 网选 5014 Number Sequence(异或)

    1 /* 2 题意:a, b两个序列,规定由[0, n]区间的数! 3 求 a[i] ^ b[i] 的和最大! 4 5 思路:如果数字 n的二进制有x位, 那么一定存在一个数字m,使得n^m的所有二进 ...

  9. 2014 ACM/ICPC 北京赛区网络赛解题报告汇总

    首页 算法竞赛» 信息聚合 ONLINE JUDGE 书刊杂志 BLOG» 新闻故事» 招聘信息» 投稿须知 2014 ACM/ICPC 北京赛区网络赛解题报告汇总 九月 21st, 2014 | P ...

最新文章

  1. Less和Sass的使用
  2. 银行委托第三方催收信用卡欠款,是合法吗?
  3. SQL调优:带函数的谓词导致CBO Cardinality计算误差
  4. Mysql yum 安装后,一些重要的文件路径
  5. openoffice将html转成pdf,通过openOffice将office文件转成pdf
  6. 扩展Jquery方法创建LigerUI Grid
  7. 梦想成真,喜获微软MVP奖项,微软MVP FAQ?
  8. 芒果db怎么连mysql_MongoDB 芒果数据库的使用
  9. GIS+区块链,地理空间数据新型应用场景未来可期
  10. BlackBerry黑莓7230/7290等常用的功能简介以及技巧分类【转载】
  11. 【网络通信 -- 直播】ZLMediaServer -- 环境搭建与测试
  12. 猿创征文 |【算法入门必刷】数据结构-栈(四)
  13. Hard masking and soft masking
  14. 使用JS-SDK自定义微信分享效果
  15. 苹果手机快速发送文件到win10电脑
  16. 代码管理和编辑工具Source Insight 4.0使用介绍
  17. 音视频5.4——两个MP3混音合成一个MP3
  18. 基于属性的测试,hypothesis以及查找bug
  19. java实现多元线性回归
  20. Python 的dict几种遍历方式

热门文章

  1. 平面设计师和ui设计师_游戏设计师的平面设计
  2. WebStorm 和 VsCode 的结合体来了!
  3. 获取2个地址之间的距离(高德API)
  4. Array的sort方法
  5. Vue 教程第一篇——基础概念
  6. Linux_日志管理介绍(一)
  7. Windows Nano Server安装配置详解03:远程管理Nano Server
  8. 转: MySQL 赋予用户权限(grant %-远程和localhost-本地区别)
  9. 魅族MX4的线控电路图
  10. JS URL Parser