解题思路:

首先 这个题的答案为:18446744073709551615

2^0+2^1+.......2^63=2^64-1;


主要问题是内存的大小


解决方法:long double 的取值范围 -1.2*10^-4932~1.2*10^4932



注意事项:long double 对应llf        同时  %.0llf也可以打印整数

参考代码:

#include 

#include 

int main(){

    long double sum = 0;  /*定义double型变量sum存放累加和*/

    int i;

    /*使用循环求累加和*/

    for( i=1; i<=64; i++ )

        sum = sum + pow(2.0, (i-1));  /*注意变量为double型*/

    printf("%.0llf\n", sum);  /*打印结果。%.0llf表示只取整数部分*/

    return 0;

}


点赞(0)
 

0.0分

4 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 4 条评论

只要香菜 1年前 回复TA
@只要香菜 我知道了,对着呢18446744073709551615,是我学术不精
21savage 1年前 回复TA
@只要香菜 ? 不对吧 是18446744073709551615 吧  这个数 肯定是奇数 (一年前写的了 有点记不清了QAQ)
只要香菜 1年前 回复TA
#include<stdio.h>
#include<math.h>

int main(void)
{
    double sn=0,s=1;
    for(int i=1;i<=64;i++)
    {
        printf("%.0lf\n",s);
        sn+=s;
        s*=2;
    }
    printf("%.0f\n",pow(2,64)-1);
    printf("%.0lf\n",sn);
    return 0;
}
只要香菜 1年前 回复TA
2^64-1=18446744073709551616