HDU 3063 Play game
2015-08-30 23:34
274 查看
Play game
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 382 Accepted Submission(s): 158
Problem Description
幼儿园的老师总是喜欢和孩子们玩游戏,他们经常会让孩子们围成一圈,然后开始玩报数游戏,从其中的一个孩子开始,1,2,3,4,5......一个个报下去,如果一个孩子报错了,那么那个孩子就要表演节目给大家看哦。
今天,学校里新来了一个小明老师,她突发奇想,想考考大家,于是她也出了一个游戏,游戏规则是这样的:
1.n个孩子们站成一排,编号分别是1,2,3,4......n
2.孩子们手上都拿着一张纸,若这个孩子的编号是i,那么纸上的数字是i*(i+1)*(i+2)
3.如果孩子只说出自己的纸上的数字, 那么是不难的,可是, 孩子要说出,前面所有孩子和自己纸上的和.例如,晶晶的编号是2,那么她要说1*2*3+2*3*4 = 30,其实很好懂, 对不对。。。
哎, 这可为难了小朋友啊,那么难的题目, 而且, 那么多的小朋友, 该怎么办呢,你来帮帮他们好吗?
Input
输入孩子的编号n(1<=n<=10^100)
Output
孩子该报出来的数,最后 mod 9999
Sample Input
1 2 3
Sample Output
6 30 90
好像挺直接的一个题目,不知道比赛的时候为什么那么捉急。
#include <iostream> #include <stdio.h> #include <string> #include <cstring> #include <algorithm> #include <cmath> using namespace std; typedef long long ll; const int mod = 9999; char s[10009]; ll num[11009]; ll fun(ll x) { return x*(x+1)*(x+2); } void init() { memset(num,0,sizeof num); for(int i=1;i<=10009;i++) { num[i]=(num[i-1]+fun(i))%mod; } } int main() { init(); while(~scanf("%s",s)) { int len=strlen(s); ll ans=0; for(int i=0;i<len;i++) ans=(ans*10+(s[i]-'0'))%mod; printf("%I64d\n",num[ans]); } return 0; }
相关文章推荐
- java线程学习(四)—Java 多线程间的通讯
- 面向对象设计的五大原则
- CSU 1585 刻苦练习CCF
- Cacti - Add New Servers With A Script
- Effective C++——条款13(第3章)
- 如何安装一个优秀的BUG管理平台(转)
- spring中的BeanFactory与ApplicationContext的作用和区别?
- 使用 Python 获取 Linux 系统信息
- MVC模式的php框架 炼成记
- Objective-C( Foundation框架 一 字符串)
- Windows Serer 2016 technical preview 3 探究 - 1 安装和界面
- Windows Serer 2016 technical preview 3 探究 - 1 安装和界面
- java算法系列之一:快速排序算法
- nginx with a much full install
- Windows 2008 关闭系统虚拟内存功能 如何删除pagefile.sys
- 'tools.jar'seems to be not in Android Studio
- DRP之javaweb开发模型Model1&Model2
- poj1127 Jack Straws(线段相交+并查集)
- 正则表达式的总结及实例
- 3.btrfs管理及应用