洛谷P2069松鼠吃果子

 题目如下

题目描述

有 n 个一种松鼠喜欢吃的果子由下向上串排成一列,并标号 1∼n。一只松鼠从最下果子开始向上跳,并且第 i 次跳可以一次跳过 (i^3mod5+1) 个果子,并把脚下的果子吃了,如果上面有果子,在重力作用下,都将向下掉下一格。如第 1 次跳从第一个果子上跳过 (13mod5+1=)2 个果子,可跳到第 3 个果子上,并把第 3 个果子吃了;第 2 次从第 4 个果子上(落在原来第三个果子位置)跳过 (23mod5+1=)4 个到第 8 个果子上,并把第 8 个吃了;如此反复。

当然,总有一次松鼠会跳出这串果子的最前面,设为每 k 次,它吃不到任何果子了。这时它回到最下面的果子上,重做它的第 k 次跳,以求吃到果子。如此,问它吃的第 m 只果子(即第 m 跳吃到的果子)的标号是什么?

输入格式

一共两行,分别为 n 和 m(1≤m≤n≤200,并且满足能够跳到第 m 次)。

输出格式

一个数,即它吃的第 m 只果子的标号。

输入输出样例

输入 #1

10 
4

输出 #1

9

说明/提示

注:吃掉的果子依次为 3,8,4(回到下面重做第 3 跳),9(回到下面重做第 4 跳)。

这题一看就是个模拟题

按要求来慢慢做就行了

以下是代码

#include <bits/stdc++.h>

using namespace std;

int n,m,w = 1,g = 1,l;
int a[300] = {0};

int main(){
	cin>>n>>m;

	l = n;

	for(int i = 1;i <= n;i++){
		a[i] = i;
	}

	for(int i = 1;i <= m && a[i];i++){
		w = w + i * i * i % 5 + 1;
		if(w > l){
			w = 1;
			i--;
			continue;
		}
		g = a[w];
		a[w] = 0;
		for(int i = w + 1;i <= l;i++){
			a[i - 1] = a[i];
		}
		a[l] = 0;
		l--;
	}

	cout<<g;

	return 0;
}

点个赞吧!!!求求了!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值