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;
}


posted on 2010-05-05 12:25 Willing 阅读(360) 评论(0)  编辑 收藏 引用 所属分类: ACM

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理