首页 > ACM题库 > HDU-杭电 > HDU 3063-Play game[解题报告]HOJ
2014
03-01

HDU 3063-Play game[解题报告]HOJ

Play game

问题描述 :

幼儿园的老师总是喜欢和孩子们玩游戏,他们经常会让孩子们围成一圈,然后开始玩报数游戏,从其中的一个孩子开始,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,其实很好懂, 对不对。。。
哎, 这可为难了小朋友啊,那么难的题目, 而且, 那么多的小朋友, 该怎么办呢,你来帮帮他们好吗?

输入:

输入孩子的编号n(1<=n<=10^100)

输出:

输入孩子的编号n(1<=n<=10^100)

样例输入:

1
2
3

样例输出:

6
30
90

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
 

 

Source
 

 

Recommend
lcy

这道题你最主要求出它的通项公式是n*(n+1)*(n+2)*(n+3)/4;这道题也就解决了!

#include”stdio.h”
#include”string.h”
#define pe 4*9999
int main()
{
__int64 n,i,s,sum;char str[101];
while(scanf(“%s”,str)!=EOF)
{
s=strlen(str);sum=0;
for(i=0;i<s;i++)
sum=(sum*10+str[i]-’0′),sum%=pe;
n=sum*(sum+1)*(sum+2)*(sum+3)/4;
printf(“%I64d\n”,n%9999);
}
return 0;
}

参考:http://www.cnblogs.com/adroitly/archive/2012/11/06/2757088.html


  1. #include <stdio.h>
    int main(void)
    {
    int arr[] = {10,20,30,40,50,60};
    int *p=arr;
    printf("%d,%d,",*p++,*++p);
    printf("%d,%d,%d",*p,*p++,*++p);
    return 0;
    }

    为什么是 20,20,50,40,50. 我觉得的应该是 20,20,40,40,50 . 谁能解释下?