C++——NOIP提高组——转圈游戏

原创 2017年05月27日 19:40:54

转圈游戏

题目描述

n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏。按照顺时针方向给 n 个位置编号,从 0 到 n-1。最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……,依此类推。 

游戏规则如下:每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1 号位置,……,依此类推,第 n−m 号位置上的小伙伴走到第 0 号位置,第n-m+1 号位置上的小伙伴走到第 1 号位置,……,第 n-1 号位置上的小伙伴顺时针走到第 m-1 号位置。 

现在,一共进行了 10轮,请问 x 号小伙伴最后走到了第几号位置。

输入格式

输入共 1 行,包含 4 个整数 n、m、k、x,每两个整数之间用一个空格隔开。

输出格式

输出共 1 行,包含 1 个整数,表示 10轮后 x 号小伙伴所在的位置编号。

样例数据 1

输入

10 3 4 5

输出

5

备注

【数据说明】 
对于 30% 的数据,0<k<7; 
对于 80% 的数据,0<k<107; 
对于 100% 的数据,1<n<1,000,000 ;0<m<n ;0≤x<n ;0<k<109


解题报告:

根据题目,答案是
(x+10km) mod n,
=(x+m(10k mod n)  mod n) mod n,
= (x % n + (m % n) *(10k %n )% n) % n;
设 fastPow(10, k, n) =10k %n
则答案是:(x % n + (m % n) * fastPow(10, k, n) % n) % n;

所以只需要求出10k mod n即可,可以使用快速幂来求解,复杂度O(log2k)。

#include<iostream>
#include<cstdio>
using namespace std;
long long n,m,k,x;
int ksm(long long a,long long b,long long c)
{
	long long d=1;
	a%=c;
	while(b>0)
	{
		if(b%2==1)
		    d=(d*a)%c;
		b=b/2;
		a=(a*a)%c;
	}
	return d;
}
int main()
{
	cin>>n>>m>>k>>x;
	k=ksm(10,k,n*m);
	k*=m;
	x+=k;
	cout<<x%n<<endl;
	return 0;
}


版权声明:我的这些烂文章还有版权这种说法嚒?不存在的啦。

NOIP2013提高组解析

题目描述: 转圈游戏 火柴排队 货车运输 积木大赛 花匠 华容道 day1 转圈游戏: 最终位置实际上就是(x+m*10^k)%n 快速幂即可。 ...
  • no1_terminator
  • no1_terminator
  • 2016年09月18日 19:48
  • 728

NOIP 2013 转圈游戏

题目描述 Description n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏。按照顺时针方向给 n 个位置编号,从0 到 n-1。最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在...
  • wwwasdirine
  • wwwasdirine
  • 2015年10月26日 21:34
  • 365

2016.9.12题解

这次考试非常地难啊,一点都不含水,我连正确率都跌了。。。,首先,考试时我竟然考了50分,好低的节奏啊,但是呢,我居然有21名,证明,还是有很多人被坑的。首先,我看到第一题就想,哇,好水啊,然后,第二题...
  • qq_35866651
  • qq_35866651
  • 2016年09月12日 20:33
  • 143

PAT-B1009题解

【题目描述】 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。 【输入格式】 测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词...
  • geek_jerome
  • geek_jerome
  • 2018年01月20日 15:49
  • 1

NOIP2013 转圈游戏

转圈游戏 2013年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解 题目描述 Description n 个小伙伴(编号从 ...
  • loifrank
  • loifrank
  • 2017年08月03日 21:54
  • 124

noip2013转圈游戏

题目描述 n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏。按照顺时针方向给 n 个位置编号,从0 到 n-1。最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,...
  • ghmgjf
  • ghmgjf
  • 2017年11月29日 10:46
  • 10

PATB1001题解

【PAT B1001】害死人不偿命的(3n+1)猜想 【题目描述】 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。...
  • geek_jerome
  • geek_jerome
  • 2018年01月19日 23:36
  • 1

codeup-5901题解

【题目描述】 读入一串字符,判断是否是回文串。“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。 【输入】 一行字符串,长度不超过255。 【输出】 ...
  • geek_jerome
  • geek_jerome
  • 2018年01月20日 15:43
  • 0

【NOIP 2012】 国王游戏

Description 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这 n 位大臣排成一排,国...
  • u012274244
  • u012274244
  • 2013年09月28日 15:02
  • 6099

noip2010 三国游戏 (博弈论)

P1809三国游戏 Accepted 标签:NOIP普及组2010 描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做《三国》的游戏。  在游戏中,小涵和计算机各执一方,...
  • yuyanggo
  • yuyanggo
  • 2015年09月25日 23:26
  • 1375
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++——NOIP提高组——转圈游戏
举报原因:
原因补充:

(最多只允许输入30个字)