水题一道,要注意两点:
1、题目中分配方式没有说明清楚
2、浮点数下取整的时候要注意,比如4.9999999其实应该是5
#include <iostream> #include <cmath> using namespace std; int main() { long double n,arr[107],sum=0,cnt=0,mark[107]={0},sum2=0; cin>>n; for(int i=0;i<n;i++) { cin>>arr[i]; sum+=arr[i]; } long double self=sum/(n+1); for(int i=0;i<n;i++) { if(arr[i]-self>0) { mark[i]=arr[i]-self; } } for(int i=0;i<n;i++) { sum2+=mark[i]; } for(int i=0;i<n;i++) { cout<<floor(100*mark[i]/sum2+0.0001)<<endl; } cin>>n; }