SGU 152 解题手记
题目要求是:向上取整向下取整都可以,自拟。所以这题不会有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; } |
