题目要求是:向上取整向下取整都可以,自拟。所以这题不会有No Solution的。但注意别把百分比是整数的也“取整”。求百分比不要用实数,用整数做。
  Submit 1: AC。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//AC
#include <cstdio>
using namespace std;
 
int main()
{
    bool round[10000]={0};
    long per[10000]={0};
    long n,c(100),z(0);
    scanf("%ld",&n);
    for (int i(0);i<n;++i)
    {
        scanf("%ld",&per[i]);
        z+=per[i];
    }
    for (int i(0);i<n;++i)
    {
        round[i]=per[i]*100%z;
        per[i]=per[i]*100/z;
        c-=per[i];
    }
    for (int i(0);i<n;++i)
        if (round[i])
        {
            ++per[i]; --c;
            if (!c) break;
        }
    for (int i(0);i<n;++i)
        printf("%ld ",per[i]);
    return 0;
}