http://acm.sgu.ru/problem.php?contest=0&problem=152
给几个数,算出每个数所占数的总和的百分比,所有的百分比加起来要等于100,取整的时候可以向上取整或向下(就是可以截断取整数或截断后再加1)。可以将每次取整的误差叠加起来,当误差超过一个百分比时就将误差减去一个百分比,并将这个百分比加到当前数的百分比。
题目还提到如果没有解的话要输出"No solution",但题目不可能没有解,所以不用管它。
submit1: AC
#include <stdio.h>
int main(void) {
int n;
scanf ("%d", &n);
int a[10001];
int i;
int sum = 0;
for (i = 0; i < n; ++i) {
scanf ("%d", a+i);
sum += a[i];
}
int part = a[0]*100/sum;
int little = a[0]*100-part*sum;
printf ("%d", part);
for (i = 1; i < n; ++i) {
part = a[i]*100/sum;
little += a[i]*100-part*sum;
if (little >= sum) {
part++;
little -= sum;
}
printf (" %d", part);
}
printf ("\n");
return 0;
}