zoukankan      html  css  js  c++  java
  • UVALive3045 POJ2000 ZOJ2345 Gold Coins

    Regionals 2004 >> North America - Rocky Mountain

    问题链接:UVALive3045 POJ2000 ZOJ2345 Gold Coins。基础练习题,用C语言编写。

    题意简述:骑士第1天获得1个金币,之后的2天获得2个金币,之后的3天获得3个金币,......,之后的i天获得i个金币,......。问到第n天总共获得多少个金币。

    问题分析:这是一个数列求和问题,用程序解决比用数学解决方便很多。

    程序中,用数组ans[]存储金币之和,即ans[i]为到第i天为止金币之和,设置ans[i]的初始值为0(程序员要尽量避免使用缺省值,以免得到意外的计算结果,除非缺省值绝对有保障)。

    AC的C语言程序如下:

    /* UVALive3045 POJ2000 ZOJ2345 Gold Coins */
    
    #include <stdio.h>
    
    #define MAXN 10000
    
    int ans[MAXN+1] = {0};
    
    void maketable()
    {
        int i, j, k;
    
        j = 1;  /* Ai, S=1,2,2,3,3,3,4,4,4,4,...... */
        k = 1;  /* 同值计数变量:j值够j个(用k来计数, k=j时)则j增1 */
        for (i=1; i<=MAXN; i++){
            ans[i] = j + ans[i - 1];
            if (k == j){
                j++;
                k = 0;
            }
            k++;
        }
    }
    
    int main(void)
    {
        int n;
    
        maketable();
    
        while(scanf("%d", &n) != EOF && n != 0)
            printf("%d %d
    ", n, ans[n]);
    
        return 0;
    }


  • 相关阅读:
    字典树(Trie)的学习笔记
    kmp学习笔记
    NOIP PJ游记
    Hash学习笔记
    神奇的差分法(内附树状数组的一点扩展)
    DLX算法一览
    A*与IDA*的奇妙之旅
    HDU_2553——n皇后问题,作弊
    HDU_2035——求A^B的最后三位数
    HDU_2034——集合A-B
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564455.html
Copyright © 2011-2022 走看看