POJ 2000 Gold Coins
2015-11-19 22:33
441 查看
题目描述
国王用付给他忠诚的骑士金币。在服役的第一天,骑士收到了一枚金币。在之后两天的每一天(服役的第二第三天),骑士收到两枚金币。在之后三天的每一天(服役的第四五六天),骑士收到三枚金币。这种支付模式将不限期地继续下去:在连续的 n 天每天收到 n 枚金币之后,骑士将会在接下来的 n+1 天每天收到 n+1 枚金币,这里 n 是一个任意的正整数。
你的程序要判定在任意给定的天数骑士累计收到了多少枚金币(从第一天开始)。
输入
输入包含至少一,但是至多二十一行。输入的每行(除了最后一行)包含问题的一组测试实例,一组实例是一个整数(在 1...10000 范围内),代表天数。输入的结束以包含一个数 0 的行表示。
输出
对于每组测试实例将有一行。这一行包含来自对应输入行的天数,接下来是一个空格和从第一天到给定的天数里,骑士收到的金币数。
来源
Rocky Mountain 2004
思路
数据比较小,直接模拟。另外算一下的话可以 O(1),这里就不算了。
代码
国王用付给他忠诚的骑士金币。在服役的第一天,骑士收到了一枚金币。在之后两天的每一天(服役的第二第三天),骑士收到两枚金币。在之后三天的每一天(服役的第四五六天),骑士收到三枚金币。这种支付模式将不限期地继续下去:在连续的 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 ); return 0; }
相关文章推荐
- svg绘制logo
- <5> go 上下文传递context
- Learning ROS for Robotics Programming Second Edition学习笔记(三) indigo rplidar rviz slam
- Learning ROS for Robotics Programming Second Edition学习笔记(三) indigo rplidar rviz slam
- Learning ROS for Robotics Programming Second Edition学习笔记(三) indigo rplidar rviz slam
- Django Web部署平台 推荐
- <4> go 工厂
- <3> go 枚举
- cpongo
- django template 自定义filter的使用
- Mongoose6.0源码分析(3)-重要结构体
- golang 大文件分割
- Google breakpad
- Django里,如何更改ADMIN管理后台的显示
- 揭秘TensorFlow:Google开源到底开的是什么?
- ubuntu下Django的安装和使用(一)
- GO语言实现文件上传
- Django学习笔记2
- 【Educational Codeforces Round 1D】【DFS 联通块打标记法】Igor In the Museum 联通块内墙的面数
- GO语言的"类"操作