解题思路:
方法一:1    运用等比求和的公式Sn=a1*(1-q^n)/(1-q);

                2   两种类型选择 double 和 unsifned long long 

                    3  两种计算选择  运用数学函数pow(2,64) 或者 运用循环但不确定最后的值是否能求下

方法二:  对于超长整数的一般都可以采用数组来存储


方法三: 简单直接原样输出

                
注意事项:

参考代码:

方法一:

#include"stdio.h"

#include"math.h"

main()

{

double sum=0;

sum=sum+pow(2.0,64)-1;

printf("%.0lf",sum);

}

方法二:

#include <stdio.h>

main()

{

    int a[51] = {0};

    a[50] = 1;

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

    {

        int jw=0, j=50;

        while(j!=0)

        {

            a[j] = a[j]*2 + jw;

            jw = a[j]/10;

            a[j] %= 10;

            j--;

        }

    }

    int flag = 1;

    for(int i=0; i<=50; i++)

    {

        if(flag && a[i]==0);

        else

        {

            if(i==50)

            {

                printf("%d", a[i]-1);

                return 0;

            }

            flag = 0;

            printf("%d", a[i]);

        }

    }

    return 0;

}

或者

#include <stdio.h>

#include <math.h>

int main() {

    int bigNumber[100] = {0};

    bigNumber[0] = 1;

 

    for (int i = 0; i < 64; ++i) {

 

        for (int j = 0; j < 64; ++j) {

            bigNumber[j]*=2;

        }

 

        for (int j = 0; j < 64; ++j) {

            if (bigNumber[j] > 9) {

                bigNumber[j+1] += 1;

                bigNumber[j] %= 10;

            }

        }

    }

 

 

 

    for (int i = 63; i >= 0; --i) {

        if (bigNumber[i] > 0) {

            for (int j = i; j >= 0; --j) {

                printf("%d",bigNumber[j]);

            }

            break;

        }

    }

    return 0;

}

方法三

#include"stdio.h"

main()

{

    printf("18446744073709552000");

}

点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论