数字游戏 (2013年11月24日 蓝桥杯校内选拔赛c\c++B组)

5.标题:数字游戏

 

    栋栋正在和同学们玩一个数字游戏。

 

    游戏的规则是这样的:栋栋和同学们一共n个人围坐在一圈。栋栋首先说出数字1。接下来,坐在栋栋左手边的同学要说下一个数字2。再下面的一个同学要从上一个同学说的数字往下数两个数说出来,也就是说4。下一个同学要往下数三个数,说7。依次类推。

 

    为了使数字不至于太大,栋栋和同学们约定,当在心中数到 k 时,下一个数字重新从1开始数。例如,当k=13时,栋栋和同学们报出的前几个数依次为:

    1, 2, 4, 7, 11, 3, 9, 3, 11, 7。

 

    游戏进行了一会儿,栋栋想知道,到目前为止,他所有说出的数字的总和是多少。

 

【输入格式】

    输入的第一行包含三个整数 n,k,T,其中 n 和k 的意义如上面所述,T 表示到目前为止栋栋一共说出的数字个数。

 

【输出格式】

    输出一行,包含一个整数,表示栋栋说出所有数的和。

 

【样例输入】

3 13 3

【样例输出】

17

 

【样例说明】

    栋栋说出的数依次为1, 7, 9,和为17。

 

【数据规模与约定】

    1 < n,k,T < 1,000,000;

 

【资源约定】

    峰值内存消耗 < 64M

    CPU消耗  < 2000ms

 

 

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

 

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

 

注意: main函数需要返回0

注意: 只使用ANSIC/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。

注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。

 

提交时,注意选择所期望的编译器类型。

#include "iostream.h"
#include <cstring>

int a[1000000];

int shushu(int N, int K,int T)
{
	int j = 1, i = 0, sum = 0;
	memset(a,  0, sizeof(a));
	a[0] = 1;
	
		for(; ; j++, i++) {
			a[j] = a[j-1] + i;
			if(a[j] > K)
				a[j] = a[j]%K; //大于K的处理
			if(j == N) {
				T--;
				a[0] = a[j];
				j = 0; //进入下一次
				sum += a[1];
				//cout << a[1]<<endl;
			}
			if(T == 0) break;
		}//for

	return sum;
}//shushu
int main()

{
	int T = 0, N = 0, K = 0; //N个人 //T 表示到目前为止栋栋一共说出的数字个数// 数到 K 时,下一个数字重新从1开始数
	while((cin>>N>>K>>T)) {
		cout<<shushu(N, K, T)<<endl;
	}//while

	return 0;
}//main


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值