求和:s = 1x1 + 2x2 + 3x3 + … + 100x100
求和:s = 1 + 2 + 2² + 2³ + …… + 2的63次方
我的代码
//求和:s = 1*1 + 2*2 + 3*3 + ... + 100*100
//印度国王的奖励,求和:s = 1 + 2 + 2² + 2³ + …… + 2的63次方
#include<iostream>
#include<stdlib.h>
#include<math.h>
using namespace std;
int getSum(int n)
{
int sum = 0;
for(int i=1; i<(n+1); i++)
{
sum += i*i;
}
return sum;
}
//int getSum2(int n)
double getSum2(int n)
{
//int sum = 0;
double sum = 0;
for(int i=0; i<(n+1); i++)
{
sum += pow(2.0, i);
}
return sum;
}
int main()
{
int n,m;
cin >> n >> m;
cout << getSum(n) << endl;
cout << getSum2(m) << endl;
system("pause");
return 0;
}
总结
1、函数pow()、sqrt()在math.h中,pow(2.0, 2)底数为浮点数,指数为整数;
2、s = 1 + 2 + 2² + 2³ + …… + 2的63次方的和超过int类型的最大值,所以函数改为double类型;