PAT A1011 Sum of Number Segments
这题最后两个测试总是跑不通,最后发现是加法和乘法运算中数值较大,double和int的精度都不够,得使用long double和long int才行。
#include<cstdio>
using namespace std;
const int N = 100010;
long int dp[N]={0};
int main(){
//输入
int n;
scanf("%d",&n);
double v;
long double sum = 0;
for(int i = 0 ; i < n ; i++){
scanf("%lf",&v);
if(i == 0) dp[i] = n;
else dp[i] =dp[i-1]+n-(2*i) ;
sum += dp[i]*v;
}
//输出
printf("%.2Lf
",sum);
return 0;
}