题目链接:http://codeforces.com/problemset/problem/1009/C
这题注意一下精度。
用long long型,最后记得强转double,再用 cout << setprecision(15)<< ave << endl;否则输出的还是整数。
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int n,m;
long long sum=0,x,d,k;
double ave;
cin>>n;
cin>>m;
while(m--){
cin>>x;
cin>>d;
if(d>=0){
sum+=n*x+d*(n-1)*n/2;
}
else{
if(n%2){
k=(n+1)/2;
sum+=n*x+d*(k*k-k);
}
else{
k=n/2;
sum+=n*x+d*(k*k);
}
}
}
ave = (double)sum/n;
cout << setprecision(15)<< ave << endl;
return 0;
}