zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    WORD数据类型数据类型及 Bit,Byte,WORD,DWORD区别和联系
    C++指针探讨 (三) 成员函数指针
    visual c++中常用MFC文件及库文件
    SVN版本管理软件的使用介绍与教程
    C++星号的含义
    ajaxValidator 常见问题解决(传参,中文乱码)
    C++中的常量
    孙鑫老师VC++深入详解第一节课源代码(这样写更好理解)
    C/C++ 头文件 常用头文件功能查询表
    C++指针探讨 (一)数据指针
  • 原文地址:https://www.cnblogs.com/cute/p/3384100.html
Copyright © 2011-2022 走看看