• The Trip PC/UVa IDs: 110103/10137, Popularity: B, Success rate: average Level: 1


    #include<cstdio>
    #include<iostream>
    #include<string>
    #include<algorithm>
    #include<iterator>


    using namespace std;
    /*
    * A solution for "The Trip" problem.
    * UVa ID: 10137
    */
    #include <stdio.h>

    int main (int argc, const char * argv[]) {
        /* number of students in the trip */
        long numOfStudents;
       
        /* the total sum of money spent */
        double total;
       
        /* the total amount of money to exchange in order to equalize */
        double exchange;
       
        /* the equalized trip amount to be payed by each student */
        double equalizedAmount;
       
        /* difference between the equalized amount and the amount spent */
        double diff;
       
        /* sum of all negative differences */
        double negativeSum;
       
        /* sum of all positive differences */
        double positiveSum;
       
        /* iterator */
        int i;
       
        while(scanf("%ld", &numOfStudents) != EOF) {
                   
            /* 0, ends the program */
            if (!numOfStudents) {
                return 0;
            }
           
            /* keeps the amount of money spent by each student */
            double amountSpent[numOfStudents];     
           
            /* clean */
            total = 0;
            negativeSum = 0;
            positiveSum = 0;
                   
            for (i = 0; i < numOfStudents; i++) {
                scanf("%lf ", &amountSpent[i]);
                total += amountSpent[i];
            }
                   
            equalizedAmount = total / numOfStudents;
           
            for (i = 0; i < numOfStudents; i++) {
                /* to ensure 0.01 precision */
                diff = (double) (long) ((amountSpent[i] - equalizedAmount) * 100.0) / 100.0;
               
                if (diff < 0) {
                    negativeSum += diff;
                } else {
                    positiveSum += diff;
                }
            }

            /* when the total amount is even, these sums do not differ. otherwise, they differ in one cent */
            exchange = (-negativeSum > positiveSum) ? -negativeSum : positiveSum;
                           
            /* output result */
            printf("$%.2lf ", exchange);
        }

        return 0;
    }

  • 相关阅读:
    贪心算法
    机器视觉算法与应用读书笔记(算法)
    多层感知机面临的问题
    反向传播
    卷积后的输出尺寸
    TensorFlow入门
    MyBatis-使用XML或注解的简单实例
    在web.xml中配置SpringMVC
    深入理解Class类和Object类
    MySQL索引
  • 原文地址:https://www.cnblogs.com/cute/p/3384100.html
Copyright © 2020-2023  润新知