蓝桥杯 不大的数

题目描述:
在当今的大数据时代,超大数的高精度计算已经成为众多领域的热门研究之一。现在T校也想在此领域有所造诣已造福于全社会,然而由于时间有限,所以短时间内难以找出大数计算的通用算法,于是学校找到了同学中的“神霸”——你来帮忙,并仅要求你能在数并不算大的时候给出结果。又出于某种特殊需要,也并不要求你给出数的全部结果,而只是要求结果的前10位(注意不是后10位),并考虑到2的幂次的特殊性和典型性,所以要你计算的数均为2的幂次。

输入格式
一个自然数n。

输出格式
2的n次幂的前10位。

样例1 输入
60

样例1 输出
1152921504

样例2 输入
60000

样例2 输出
6305794870

数据规模和约定
0<=n<=10000000

代码:

#include <iostream>
using namespace std;
int main() {
    int n;
    scanf("%d",&n);
    double t = 1.0;
    for(int i = 0; i < n; i++) 
	{
        t = t * 2;
        if(i >= 34 && i % 10 == 0) t /= 1000;
        if(i % 971 == 0) t /= 10;
    }
    long long int d = t;
    int sum = 0;
    while(d)
	{
        d  /= 10;  sum++;
    }
    while(sum > 10)
	{
        t /=  10;  sum--;
    }
    long long int e = t;
    printf("%lld", e);
}

执行结果:
在这里插入图片描述

在这里插入图片描述

参考文本
https://blog.csdn.net/liuchuo/article/details/51990160

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值