必威体育Betway必威体育官网
当前位置:首页 > IT技术

计算2的N次方

时间:2019-10-10 09:43:19来源:IT技术作者:seo实验室小编阅读:78次「手机版」
 

2的n次方

任意给定一个正整数N(N<=100),计算2的n次方的值。

Input

输入一个正整数N。

Output

输出2的N次方的值。

Sample Input

5

Sample Output

32

Hint

高精度计算

是不是看到这个标题,就蠢蠢欲动,觉得石头落下地了呢?但是仔细一看,啊?2^100????????

就是unsigned long long 也不够呀,那没办法了,只有用其他的技巧了,我和同学苦思冥想,只想到了用数组去存储每一位数然后输出。

那到底怎么操作呢?

注意看最后一位,如果是1,1*2=2;如果是2,2*2=4;如果是4,4*2=8;那如果是8呢(已经执行了前面的步骤,2^3)?,8*2=16,超过了10就往左敬一个,有点算盘的感觉,三下五除二,四去六敬一。

我们可以用这个原理。上代码

#include<stdio.h> 
int main()
{	
	int a[50]={0};//估计50个位数保存应该够用了 
	a[49]=1;/*用数组存储,从右往左依次敬位*/ 
	int n;
	int i;
	int b=0;//这个b充当敬位的功能,就是相当于笔算的时候满十敬一 
	scanf("%d",&n);
	//n次循环。就是乘了n次 
	while(n--){
		int i=49;
		while(i>0){
			int flag=2 * a[i]+b;
			a[i]=flag % 10;
			b=flag / 10;
			i--;
		}
	}
	/*因为存储了数组是前面都是零,然后后面是有效数字,
        控制不让前面的无效数字输出 */
	for(i=0;i<50;i++)
		if(a[i]!=0) break;
	for(;i<50;i++)
		printf("%d",a[i]);
	return 0;
	
	
 } 

嗯嗯,开始觉得很简单,后来又觉得不简单,然后终于找到了规律。从小学竖式里面寻找规律,*2其实就是两个一样的数相加。

满十敬一。

OK,AC。数字真的是很奇妙呀。

相关阅读

此计算机上缺少vc2005_sp1_with_atl_fix_redist

安装Loadrunner11的时候报错解决办法就是,在安装文件的目录下,找到文件,"lrunner\Chs\prerequisites\vc2005_sp1_redist"目录下,点

微信公众号"改错字"功能升级,一篇文章可改20个错字|A

科技圈热点时隔5年,雷军再次公开表态:要求小米认真向华为学习红米新旗舰命名K20,一石激起千层浪。时隔5年,雷军再次公开表态,要求小米

SqlServer之like、charindex、patindex区别及性能分析

第一篇文章:SqlServer之like、charindex、patindex1、环境介绍测试环境 SQL2005测试数据 200W条2、环境准备2.1建表CREATE TABLE [

Java开发者如何正确的使用String,StringBuffer,StringBu

通过前面的文章,我们知道String类最大的特点是不可变性,这意味着对String类的任何修改都会新生成一个字符串,比如你执行了String类的

JDBC的PreparedStatement启动事务使用批处理executeBa

转自:https://blog.csdn.net/xiong9999/article/details/53258698 JDBC使用MySQL处理大数据的时候,自然而然的想到要使用批处理, 普

分享到:

栏目导航

推荐阅读

热门阅读