• POJ做题笔记:1000,1004,1003


    1000 A+B Problem

    题目大意:输入两个数a和b,输出他们的和。
    代码:

    #include <stdio.h>
    int main()
    {
        int a, b;
        while (scanf("%d%d" , &a, &b) != EOF) {
            printf("%d
    ", a + b);
        }
        return 0;
    }

    1004 Financial Management

    题目大意:告诉你Larry的12个月的工资,求这12个月的工资的平均数。
    代码:

    #include <stdio.h>
    double number[12], total = 0, average = 0;
    int main()
    {
        int i;
        for (i = 0; i < 12; i ++)
        {
            scanf("%lf", &number[i]);
        }
        for (i = 0; i < 12; i ++)
        {
            total += number[i];
        }
        average = total / 12.0;
        printf("$%.2f
    ", average);
        return 0;
    }

    1003 Hangover

    题目大意:给定一个长度len,求最小的一个满足"1/2+1/3+...+1/(n+1)>=len"的数n。
    思路:开一个数组length[n]表示1/2+1/3+...+1/(n+1),然后对于每一个len,查找最小的满足"length[n]>=len"的数n。
    我这里是for循环查找的;也可以使用二分查找,这样速度更快。
    代码:

    #include <stdio.h>
    double length[500];
    int cnt = 0;
    void prepare()
    {
        length[++cnt] = 1 / 2.0;
        int i;
        for (i = 3; i < 500; i ++)
        {
            cnt ++;
            length[cnt] += length[cnt-1] + 1 / (double)i;
            if (length[cnt] >= 5.20)
                break;
        }
    }
    int solve(double len)
    {
        int i;
        for (i = 1; i <= cnt; i ++)
        {
            if (length[i] >= len)
                return i;
        }
    }
    int main()
    {
        prepare();
        double len;
        while (scanf("%lf", &len) != EOF)
        {
            if (len <= .0)
                break;
            else {
                int number = solve(len);
                printf("%d card(s)
    ", number);
            }
        }
        return 0;
    }
  • 相关阅读:
    The Game
    棋盘问题(dfs)(类似8皇后)
    dfs---之全排列
    Dijkstra算法(求单源最短路径)
    四点共面 (简单题)
    最长递增子序列
    线段的重叠
    kruskal
    hdu 1232 畅通工程
    无限对拍程序
  • 原文地址:https://www.cnblogs.com/answernotfound/p/5152112.html
Copyright © 2020-2023  润新知