题意:给你一个经典的汉诺塔递归程序,问你最少几步使得三个柱子上的盘子数量相同。(保证最开始盘子数量可以被3整除)

规律:ans(n)=2^(2*n/3-1)+t(n/3)。

t(1)=0.

t(n)=

t(n-1)+1,n为偶数

t(n-1)*4+2,n为奇数。

Java文件读写主要有以下两种方法,第二种,输出格式更随心所欲,更实用:

import java.util.*;
import java.io.*;
import java.math.*; public class Main{
public static void main(String[] argc){
BigInteger[] t=new BigInteger[305];
BigInteger[] pw=new BigInteger[305];
t[1]=BigInteger.ZERO;
for(int i=2;i<=100;++i){
if(i%2==0){
t[i]=t[i-1].add(BigInteger.ONE);
}
else{
t[i]=t[i-1].multiply(BigInteger.valueOf(4l)).add(BigInteger.valueOf(2l));
}
}
pw[0]=BigInteger.ONE;
for(int i=1;i<=300;++i){
pw[i]=pw[i-1].multiply(BigInteger.valueOf(2l));
}
Scanner cin = new Scanner(System.in);
try{cin=new Scanner(new FileInputStream("input.txt"));}catch(Exception e){}
int n=cin.nextInt();
cin.close();
/*pw[2*n/3-1].add(t[n/3]).toString()*/
File file=new File("output.txt");
try{
BufferedWriter bf=new BufferedWriter(new PrintWriter(file));
bf.append(pw[2*n/3-1].add(t[n/3]).toString());
bf.close();
}
catch(Exception e){}
}
}
import java.util.*;
import java.io.*;
import java.math.*; public class Main{
public static void main(String[] argc){
BigInteger[] t=new BigInteger[305];
BigInteger[] pw=new BigInteger[305];
t[1]=BigInteger.ZERO;
for(int i=2;i<=100;++i){
if(i%2==0){
t[i]=t[i-1].add(BigInteger.ONE);
}
else{
t[i]=t[i-1].multiply(BigInteger.valueOf(4l)).add(BigInteger.valueOf(2l));
}
}
pw[0]=BigInteger.ONE;
for(int i=1;i<=300;++i){
pw[i]=pw[i-1].multiply(BigInteger.valueOf(2l));
}
Scanner cin = new Scanner(System.in);
try{cin=new Scanner(new FileInputStream("input.txt"));}catch(Exception e){}
int n=cin.nextInt();
cin.close();
/*pw[2*n/3-1].add(t[n/3]).toString()*/
//File file=new File("output.txt");
try{
FileWriter fw = new FileWriter("output.txt", true);
PrintWriter cout = new PrintWriter(fw);
cout.println(pw[2*n/3-1].add(t[n/3]));
cout.flush();
//BufferedWriter bf=new BufferedWriter(new PrintWriter(file));
//bf.append(pw[2*n/3-1].add(t[n/3]).toString());
//bf.close();
}
catch(Exception e){}
}
}

【高精度】【找规律】Gym - 101243B - Hanoi tower的更多相关文章

  1. 递推+高精度+找规律 UVA 10254 The Priest Mathematician

    题目传送门 /* 题意:汉诺塔问题变形,多了第四个盘子可以放前k个塔,然后n-k个是经典的汉诺塔问题,问最少操作次数 递推+高精度+找规律:f[k]表示前k放在第四个盘子,g[n-k]表示经典三个盘子 ...

  2. bzoj 1002 [FJOI2007]轮状病毒 高精度&&找规律&&基尔霍夫矩阵

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2234  Solved: 1227[Submit][Statu ...

  3. HDU 5351——MZL's Border——————【高精度+找规律】

    MZL's Border Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  4. Codeforces Gym 100114 A. Hanoi tower 找规律

    A. Hanoi tower Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100114 Descript ...

  5. 【洛谷】2144:[FJOI2007]轮状病毒【高精度】【数学推导??(找规律)】

    P2144 [FJOI2007]轮状病毒 题目描述 轮状病毒有很多变种.许多轮状病毒都是由一个轮状基产生.一个n轮状基由圆环上n个不同的基原子和圆心的一个核原子构成.2个原子之间的边表示这2个原子之间 ...

  6. [FJOI2007]轮状病毒 题解(dp(找规律)+高精度)

    [FJOI2007]轮状病毒 题解(dp(找规律)+高精度) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1335733 没什么好说的,直接把规律找出来,有 ...

  7. codeforces Gym 100418D BOPC 打表找规律,求逆元

    BOPCTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action?c ...

  8. 打表找规律C - Insertion Sort Gym - 101955C

    题目链接:https://cn.vjudge.net/contest/273377#problem/C 给你 n,m,k. 这个题的意思是给你n个数,在对前m项的基础上排序的情况下,问你满足递增子序列 ...

  9. bzoj1002 [FJOI2007]轮状病毒——找规律+高精度

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1002 打表找规律,似乎是这样:https://blog.csdn.net/fzhvampir ...

随机推荐

  1. max_element和min_element的用法

    首先,max_element和min_elemetn看字面意思是求最大值和最小值,这个确实是这个意思.不过,需要注意的是,他返回的是最大值(最小值)的地址,而非最大值(最小值).对于一般数组的用法则是 ...

  2. 微信小程序提示框

    一.wx.showToast 如上图所示,showToast会显示一个弹窗,在指定的时间之后消失.中间的图标默认只有加载中和成功两种,也可以用image参数自定义图标 wx.showToast({ t ...

  3. js跨域上传文件 iframe

    封装好的jq插件 (function () { var iframe = '<iframe name="jqUploadIframe" style="display ...

  4. python进行机器学习(一)之数据预处理

    一.加载数据 houseprice=pd.read_csv('../input/train.csv') #加载后放入dataframe里 all_data=pd.read_csv('a.csv', h ...

  5. ms17010利用失败解决一则

    没有反弹得到session并且提示如下: [-] 10.0.131.2:445 - Service failed to start, ERROR_CODE: 216 换了一个payload set p ...

  6. OOM有哪些情况,SOF有哪些情况

    OOM 1.全称为OutOfMemoryError异常,如果虚拟机在扩展栈时无法申请足够的内存空间,抛出它: 2.Java heap异常:java.lang.OutOfMemoryError:Java ...

  7. free函数在操作系统内存中的实现【转】

    转自:http://www.2cto.com/kf/201210/160985.html 我一次性malloc十个单位节点的内存空间出来赋值给L, 现在我想一次性删除从第3个到第6个节点,我是这么做的 ...

  8. 用__builtin_return_address获得程序运行栈情况【转】

    转自:http://blog.csdn.net/vpwork/article/details/7680102 %pF versatile_init+0x0/0x110 %pf versatile_in ...

  9. python string 对齐文本的几个方法

    用rjust().ljust()和center()方法对齐文本

  10. thinkphp模板常用的方法

    thinkphp模板我是看了3.2的文档,对里面的东西过了一遍,然后在写到需要用到模板的东西的时候就有印象,有的能直接回顾,但是有的就可能只知道有这个东西,但是不知道怎么用,所以就重新查手册,这个的话 ...