zoukankan      html  css  js  c++  java
  • 2014 网选 上海赛区 hdu 5047 Sawtooth

    题意:求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("
    ");
    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
    ", (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 }
    View Code
  • 相关阅读:
    工厂模式之数据工厂
    面向过程的命令模式
    DLL共享主窗口的ADOCONNECTION
    插件框架
    人生哲理
    字符串函数大全
    汉化DBNavigator
    类继承复用之适配器模式
    Bootstraptagsinput标系统使用心得
    bootstrapdatepicker使用
  • 原文地址:https://www.cnblogs.com/hujunzheng/p/3997036.html
Copyright © 2011-2022 走看看