zoukankan      html  css  js  c++  java
  • 汉诺双塔 (高精度)

    https://www.luogu.org/team/show?teamid=2961

    由普通汉诺塔问题,设数量为n时移动次数为a[n],则a[n]=a[n-1]+1+a[n-1]=2*a[n-1]+1. // 因为a[1]=1,所以a[n]=2^n-1.(找规律?) 故双塔就是2*(2^n-1).---》但这里没用到

    因为数据忒大,所以得用高精度。// 这里参考了别人的

    思路就是用数组来存储每一位数。

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstdio>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<queue>
     7 #include<stdlib.h>
     8 #define mem(a) memset(a,0,sizeof(a))
     9 using namespace std;
    10 int f[200];
    11 int main()
    12 {
    13   int n;
    14   cin>>n;
    15   f[1]=1;
    16   for(int i=2;i<=n;i++)
    17   {
    18       for(int k=1;k<=i-1;k++)
    19         f[k]*=2; //越低位的数乘2的次数越多,因为公式就是前一项*2,在“递归”到再前一项
    20       for(int k=1;k<=i-1;k++)
    21         if(f[k]>=10) //进位
    22       {
    23           f[k]-=10;
    24           f[k+1]++;
    25       }
    26       f[1]++;
    27   }
    28   for(int i=1;i<=200;i++) //双塔的*2
    29     f[i]*=2;
    30   for(int i=1;i<=200;i++)
    31     if(f[i]>=10)
    32   {
    33      f[i]-=10;
    34      f[i+1]++;
    35   }
    36   int m=200;
    37   while(f[m]==0) //找到最高位
    38     m--;
    39   for(int i=m;i>=1;i--)
    40    cout<<f[i];
    41   return 0;
    42 }
    View Code
  • 相关阅读:
    HttpModule,HttpHandler,HttpHandlerFactory
    IHttpModule实现URL重写
    HttpModule与HttpHandler详解
    IHttpModule接口
    VS中新建网站和新建项目web应用程序的区别?(实际应用总结一点)
    slf4j简介
    SQL条件表达式
    Windows命令查看文件MD5
    Final对象
    Seasar2框架:AOP
  • 原文地址:https://www.cnblogs.com/XXrll/p/10225376.html
Copyright © 2011-2022 走看看