6760: 九连环(大数)
6760: 九连环
http://exam.upc.edu.cn/problem.php?id=6760
时间限制: 1 Sec 内存限制: 128 MB
提交: 582 解决: 92
[提交] [状态] [讨论版] [命题人:admin]
题目描述
九连环是一种源于中国的传统智力游戏。如图所示,九个圆环套在一把“剑”上,并且互相牵连。游戏的目标是把九个圆环从“剑”上卸下。
圆环的装卸需要遵守两个规则。
第一个(最右边)环任何时候都可以装上或卸下。
如果第k个环没有被卸下,且第k个环右边的所有环都被卸下,则第k+1个环(第k个环左边相邻的环)可以任意装上或卸下。
与魔方的千变万化不同,解九连环的最优策略是唯一的。为简单起见,我们以“四连环”为例,演示这一过程。这里用1表示环在“剑”上,0表示环已经卸下。
初始状态为1111,每部的操作如下:
1101(根据规则2,卸下第2个环)
1100(根据规则1,卸下第1个环)
0100(根据规则2,卸下第4个环)
0101(根据规则1,装上第1个环)
0111(根据规则2,装上第2个环)
0110(根据规则1,卸下第1个环)
0010(根据规则2,卸下第3个环)
0011(根据规则1,装上第1个环)
0001(根据规则2,卸下第2个环)
0000(根据规则1,卸下第1个环)
由此可见,卸下“四连环”至少需要10步。随着环数增加,需要的步数也会随之增多。例如卸下九连环,就至少需要341步。
请你计算,有n个环的情况下,按照规则,全部卸下至少需要多少步。
输入
输入第一行为一个整数m ,表示测试点数目。
接下来m行,每行一个整数n。
输出
输出共m行,对应每个测试点的计算结果。
样例输入
3 3 5 9
样例输出
5 21 341
提示
对于10%的数据,1≤n≤10。
对于30%的数据,1≤n≤30。
对于100%的数据,1≤n≤105,1≤m≤10。
规律:
奇数 : a[i-1]*2+1;
偶数:a[i-1]*2;
代码:
import java.util.*;
import java.math.*;public class dashu{public static void main(String[] args) {int m,n;Scanner cin=new Scanner(System.in);m=cin.nextInt();while(m>0) {m--;n=cin.nextInt();if(n==1)System.out.println("1");else{BigInteger s;BigInteger a=BigInteger.valueOf(1);BigInteger b=BigInteger.valueOf(2);s=a;for(int i=2;i<=n;i++){if(i%2==0)s=s.multiply(b);else{s=s.multiply(b);s=s.add(a);}}System.out.println(s);}}}
}
6760: 九连环(大数)相关推荐
- 大数加法分析及C语言实现(加数可为负数)
大数加法(加数可为负数) ·分析: 大数加法有如下几种情况: 1.两数同号 (1)同正:如,s1=11,s2=22:s1=0,s2=0 (2)同负:如,s1=-11,s2=-22 2.两数异号 (1) ...
- 大数加法【HDU 1002】
大数加法模板 一般的加法只要int类型的两数直接相加即可,大一点的数可以设为long long类型,而超过长整型的数则属于大数问题了,大数加法其实也比较简单,利用数组实现就可以啦: 主要思想如下: ( ...
- C语言实现大数运算(长整数的加、减、乘、除)
由于整型数的位数有限,因此整型数不能满足大整数(超长整数)的运算要求 .大整数计算是利用字符串来表示大整数,即用字符串的一位字符表示大整数的一位数值,然后根据四则运算规则实现大整数的四则运算. 简单表 ...
- 数据结构(十)栈的作用--大数的加法运算
一.大数加法的定义 在Java中,整数类型有四种,byte(8位).short(16位).int(32位).long(64位). 其中,int类型为32为,也就是说最大的整数为2^31,如果超过了这个 ...
- 数据库 大数据访问及分区分块优化方案
本文导读:当系统要满足每秒数万次的读写请求的需求时,我们可以用分布式计算.编写优良的程序代码.对海量数据进行分区操作.建立广泛的索引.建立缓存机制.加大虚拟内存.分批处理.使用数据仓库和多维数据库存储 ...
- 大数的减法函数--c语言
代码展示: http://paste.ubuntu.com/23693598/ #include<stdio.h> #include<stdlib.h> #include& ...
- javascript乘法和加法_JavaScript大数相加相乘的实现方法实例
前言 JavaScript 中的最大安全整数是 2 ^{53} – 1 ,即 9007199254740991,当我们进行超出这个范围的数值计算的时候就无法得到精确的值,而是一个近似值,比如我们计算 ...
- P1080 国王游戏(贪心+大数乘除)
题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王站在队伍的最 ...
- hdu A + B Problem II(大数相加,数组实现)
hdu A + B Problem II(大数相加,数组实现) 题目走起 注意最后一个case 不需要换行 下面代码 #include<stdio.h> #include<strin ...
最新文章
- 如何利用AI语义分析,做产品需求分析(1)
- 根据API创建BOM(Itpub)
- 不懂编程可以自学python吗-关于大学小白如何学习Python语言程序设计
- js数组的sort排序详解
- JUC 中的多线程协作工具类:CountDownLatch 和 CyclicBarrier
- Webpack基础之入口起点
- 基于时空相关属性模型的公交到站时间预测算法
- Java笔记-Linux环境中因编码问题导致中文String解析有问题
- Samsung ML-1640/1641/1645/2240/2241/2245/scx4200/4300/4623/4824/4828免费清零软件2.1.2完全版
- JButton的使用
- java中实现注册时Email邮件激活验证
- python实现货币的转换_Python实现制度转换(货币,温度,长度)
- pytorch转onnx报错的可能原因traced region did not have observable data dependence
- WordCloud库的安装教程
- circular包绘图笔记
- 改善到底多大 FXAA画质游戏实测
- 【SSH 出现PTY错误】
- ERP : 投入控制
- 原来消除手机上瘾才是幼儿编程的最大意义-大宝python学习记
- 从0开始写一个操作系统
热门文章
- C/C++程序员给大家示范一下,怎么在七夕表白
- RDD编程模型笔记(一)
- java抽象类例子_java抽象类经典实例分享
- Detected problems with API compatibility
- Wamp 提示Aestan Tray Menu服务未启动(非端口原因)
- php 0x80070003,HOWTO: 解决 Windows DISM error ID3 0x80070003 故障
- 为什么蓝牙耳机这么受欢迎?学生党玩游戏适合什么款式蓝牙耳机?
- 实参与形参不兼容_装修到底是用瓷砖?还是复合木地板还是实木地板好呢?
- 通达oa工作流升级 操作说明
- 实现垃圾邮件过滤(Python3实现)