【高精度】【找规律】Gym – 101243B – Hanoi tower

【高精度】【找规律】Gym – 101243B – Hanoi tower

大家好,又见面了,我是全栈君。

题意:给你一个经典的汉诺塔递归程序,问你最少几步使得三个柱子上的盘子数量相同。(保证最开始盘子数量可以被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){}
    }
}

转载于:https://www.cnblogs.com/autsky-jadek/p/7625774.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108122.html原文链接:https://javaforall.net

(0)
上一篇 2022年3月7日 下午1:00
下一篇 2022年3月7日 下午2:00


相关推荐

  • vb.net 学习「建议收藏」

    vb.net 学习「建议收藏」一、vb.net是什么vb:即VisualBasic.net:是一个开发平台,在这个平台上可以开发多种语言。bcl:我的理解就是类的定义clr:我的理解就是类的使用。作用:(相当于java虚拟机,内存管理,垃圾清理)注:因为百度上说的都太宏观了,目前还是刚刚接触这个,是从名字上去理解,有其他见解可以留言或后面我有不同感悟再改二、vb.net有什么用目前我接触到:控制台程序 窗体程序 webservice三、怎么用说一个可能很多人忽略或只有我忽略了一下吧.

    2022年6月21日
    27
  • 震惊!讯飞星火X1.5深度推理大模型凭啥叫板GPT-5?

    震惊!讯飞星火X1.5深度推理大模型凭啥叫板GPT-5?

    2026年3月16日
    2
  • 出现Permission denied的解决办法(750权限谨慎使用)

    出现Permission denied的解决办法(750权限谨慎使用)提示Permissiondenied解决的办法:$sudochmod-R777某一目录其中-R是指级联应用到目录里的所有子目录和文件777是所有用户都拥有最高权限

    2022年6月14日
    77
  • CSS3 opacity 属性

    CSS3 opacity 属性设置div元素的不透明级别1、属性opacity属性指定了一个元素的透明度。换言之,opacity属性指定了一个元素后面的背景的被覆盖程度。当opacity属性的值应用于某个元素上时,是把这个元素(包括它的内容)当成一个整体看待,即使这个值没有被子元素继承。因此,一个元素和它包含的子元素都会具有和元素背景相同的透明度,哪怕这个元素和它的子元素有不同的opacity属性值。2、语法op…

    2022年5月9日
    51
  • 都2022了,不会还有人不会idea注释相关的配置吧,速进本文

    都2022了,不会还有人不会idea注释相关的配置吧,速进本文####缘由  相信大家在写代码的时候,为了可以让自己明白以及他人可以明白,都会都在项目代码中加上注释,写注释也是有讲究的,注释分为两种,一种类注释,另一种方法注释。![在这里插入图片描述](https://img-blog.csdnimg.cn/2f8cde1992434945b1875114529607f6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Iqd5aOr5

    2022年9月30日
    6
  • CSS入门学习笔记+案例

    CSS入门学习笔记+案例CSS入门学习一、CSS简介1、什么是CSSCSS:CascadingStyleSheet层叠样式表是一组样式设置的规则,用于控制页面的外观样式2、为什么使用CSS实现内容与样式的分离,便于团队开发样式复用,便于网站的后期维护页面的精确控制,让页面更精美3、CSS作用页面外观美化布局和定位二、基本用法1、CSS语法<head> <style> 选择器{ 属性名:属性值; 属性名:属性值; } </style>&l

    2022年5月2日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号