zoukankan      html  css  js  c++  java
  • ACM 2的N次方

    总时间限制:

    1000ms

    内存限制:

    65536kB

    描述

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

    输入

    输入一个正整数N。

    输出

    输出2的N次方的值。

    提示

    高精度计算

    初看这道题时感觉很简单,大脑一根筋的直接一个循环代码提交上去,当时返回wrong answer时还很郁闷,BBB~~~~之后我感觉这题目没有想象中的那么简单,唐唐一个ACM怎么可能只出一个循环题呢。WA的原因很简单,题目要求的是要高精度计算。

    直接调用sizeof()函数,可看到int ,long都占有4个字节,double占8个字节

    要获取double,float,int型变量对应的能表示的最大值最小值非常简单,C++内已经定义好了它们,分别为DLB_MAX,DLB_MIN,FLT_MAX,FLT_MIN,INT_MAX,INT_MIN。

    我个人认为不是double类型存不下2的100次方,而是精度不够,2的100次方才31位,相比较double的308位可以算是小巫见大巫了。

    废话不多说,直接上代码:

    #include<iostream>
    using namespace std;
    int main(){
    	const int x = 2;//计算x的n次方
    	int a[1000] = { 0 };
    	int b = 0;//用来计算向前  进的数字
    	a[999] = 1;
    	int n;
    	cin >> n;
    	for (int i = 0; i<n; i++){
    		int j = 999;
    		while (j >= 0){
    			int k = a[j] * x + b;
    			a[j] = k % 10;
    			b = k / 10;
    			j--;
    		}
    	}
    	int s;
    	for (s = 0; s<1000; s++){
    		if (a[s] != 0)
    			break;
    	}
    	for (; s<1000; s++){
    		cout << a[s];
    	}
    
    
    	return 0;
    
    }


    代码测试结果:

      这是我的第一篇文章,肯定有许多不完善的地方,如有错误,欢迎指正。

  • 相关阅读:
    一个简单粗暴的爬虫
    Linux 目录结构
    python 部署 Restful web
    JVM 运行时数据区总结 栈 堆 堆大小配置总结
    成都法律援助申请流程
    JavaEE error整理(不断更新)
    ehcache.xml 属性大全
    SpringMVC 构建Restful风格 及问题处理
    Http Content-Type
    Redis 教程 Java工程师学习知识点
  • 原文地址:https://www.cnblogs.com/Zhoust/p/14994612.html
Copyright © 2011-2022 走看看