解题思路:
方法一: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 人评分