【高精度】【找规律】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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据挖掘-层次聚类

    数据挖掘-层次聚类微信搜索 二十同学 公众号 欢迎关注一条不一样的成长之路层次聚类 hierarchical 算法极为简单 有 N 多节点 最开始认为每个节点为一类 然后找到距离最近的节点 两两合并 合并后的两个节点的平均值作为新的节点 继续两两合并的过程 直到最后都合并成一类 下图表明了聚类的过程 距离最近的节点合并 第一步中 如果有两对节点距离一样 那就同时合并 层次聚类过程如果用数据挖掘工具来做 如 SPSS 一般会生成一个树形图 那么我们可以根据分析问题的具体情况 选

    2026年1月15日
    1
  • Python解决求最大公约数和最小公倍数问题

    Python解决求最大公约数和最小公倍数问题目录一.思路分析1.欧几里得法(辗转相除法)2.穷举法(一个一个除)3.stein算法二.提高要求三.测试截图题目:求两个正整数的最大公约数和最小公倍数。基本要求:1.程序风格良好(使用自定义注释模板),两种以上算法解决最大公约数问题,提供友好的输入输出。提高要求:1.三种以上算法解决两个正整数最大公约数问题。         2.求3个正…

    2022年5月16日
    41
  • HTTP.SYS远程代码执行漏洞(MS15-034)

    HTTP.SYS远程代码执行漏洞(MS15-034)目录简介影响范围危害漏洞复现win2008r2换成win7利用msf简介漏洞编号:CVE-2015-1635(MS15-034)远程执行代码漏洞存在于HTTP协议堆栈(HTTP.sys)中,当HTTP.sys未正确分析经特殊设计的HTTP请求时会导致此漏洞。成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码。影响范围任何安装了微软IIS6.0以上的WinServer2008R2、Win…

    2022年7月25日
    20
  • Linux系统定时任务「建议收藏」

    Linux系统定时任务定时任务CrondCrond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6linux操作系统之后,默认便会启动Crond任务调度服务。Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定…

    2022年4月16日
    48
  • we7源码网站_易语言 模块 反编译

    we7源码网站_易语言 模块 反编译前言最近想着搭建一个API测试平台,基础的注册登录功能已经完成,就差测试框架的选型,最后还是选择了httprunner,github上已经有很多开源的httprunner测试平台,但是看了下都是基于

    2022年7月29日
    8
  • IDEA安装教程(傻瓜式安装)

    IDEA安装教程(傻瓜式安装)IDEA安装教程1.文件下载1.idea下载2.PJ文件下载2.idea安装步骤3.PJ导包1.文件下载1.idea下载下载地址.版本为2020.1为例2.PJ文件下载下载地址.密码:d79t选择版本进行下载。2.idea安装步骤1.双击打开软件,点击Next2.选择安装目录,然后点击Next(然后会卡一会,取决于电脑性能,在此操作之间,不要着急)3.选择64位,就可以,其他选项看自己需要,然后点击Next4.无需选择,直接点击Install,5.然后点击Finish,完成

    2022年10月2日
    3

发表回复

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

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