码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 2000 Gold Coins

时间:2015-11-19 23:56:04      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

题目描述


国王用付给他忠诚的骑士金币。在服役的第一天,骑士收到了一枚金币。在之后两天的每一天(服役的第二第三天),骑士收到两枚金币。在之后三天的每一天(服役的第四五六天),骑士收到三枚金币。这种支付模式将不限期地继续下去:在连续的 n 天每天收到 n 枚金币之后,骑士将会在接下来的 n+1 天每天收到 n+1 枚金币,这里 n 是一个任意的正整数。

你的程序要判定在任意给定的天数骑士累计收到了多少枚金币(从第一天开始)。

 

输入


输入包含至少一,但是至多二十一行。输入的每行(除了最后一行)包含问题的一组测试实例,一组实例是一个整数(在 1...10000 范围内),代表天数。输入的结束以包含一个数 0 的行表示。

 

输出


对于每组测试实例将有一行。这一行包含来自对应输入行的天数,接下来是一个空格和从第一天到给定的天数里,骑士收到的金币数。

 

来源


Rocky Mountain 2004

 

思路


数据比较小,直接模拟。另外算一下的话可以 O(1),这里就不算了。

 

代码


 

#include <stdio.h>

const int MAXN = 10000 + 5;
int pay[MAXN];

int main()
{
  int now = 1;
  int cnt = 0;
  for (int i = 1; i < MAXN; i++) {
    pay[i] = now;
    cnt++;
    if (cnt == now) {
      now++;
      cnt = 0;
    }
  }
  for (int i = 1; i < MAXN; i++)
    pay[i] += pay[i - 1];
  for (int n; scanf("%d", &n) && n; )
    printf("%d %d\n", n, pay[n]);
  return 0;
}

 

  

 

POJ 2000 Gold Coins

标签:

原文地址:http://www.cnblogs.com/gu-castle/p/4979324.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!