刷过一题之NOIP2013转圈游戏

有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^k 轮,请问x号小伙伴最后走到了第几号位置。

输入:

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

输出:

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

输入示例:

10 3 4 5

输出示例:

5

数据范围:0<n<10^6,0<m<n,0<x<=n,0<k<10^9

当你看到0<k<10^9的时候你是不是极其惊讶?什么!10的1亿次方!!!!那么只能用快速幂了……

 1 #include<iostream>
 2 #define ll long long
 3 using namespace std;
 4 ll n,m,x,k;
 5 ll fast_mi(long long x,long long y)//快速幂
 6 {
 7     ll temp=1;
 8     while(y)
 9     {
10         if(y&1) temp=temp*x%n;
11         x=x*x%n;
12         y>>=1;
13     }
14     return temp%n;
15 }
16 int main()
17 {
18     scanf("%lld%lld%lld%lld",&n,&m,&k,&x);
19     ll ans=fast_mi(10,k)%n;
20     ans=ans*m%n;
21     ans=(ans+x)%n;
22     printf("%lld",ans);
23     //system("pause>nul");
24     return 0;
25 }

C++ answer

时间: 2024-10-14 11:18:21

刷过一题之NOIP2013转圈游戏的相关文章

noip2013 转圈游戏

P1965 转圈游戏 625通过 1.8K提交 题目提供者该用户不存在 标签数论(数学相关)递归/分治2013NOIp提高组 难度普及/提高- 提交该题 讨论 题解 记录 最新讨论 洛谷有缺陷 题目描述 n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……,依此类推.游戏规则如下:每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m

快速幂 NOIP2013 转圈游戏

转圈游戏 题目描述 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 号

NOIP2013转圈游戏

不得不说NOIP的水题就是牛! 题目简述:给你n个人(0 - n-1) 组成一个环,每次一起前进m步,问编号为x的人在移动了10 ^ k后,他的位置是什么 咱家还能说啥,假设我们把它拉成一个无限长的链,那么每m个长度就是一圈,所以答案就是 (x + m * 10 ^ k) % n 接下来就是快速幂了,记得要时时模就好了,轻松水过~~ #include <algorithm> #include <iostream> #include <cstring> #include

刷过一题之NOIP2013表达式求值

给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值. 输入: 仅有一行,为需要你计算的表达式,表达式中只包含数字.加法运算符“+”和乘法运算符“*”,且没有括号,所有参与运算的数字均为0到2^31-1之间的整数.输入数据保证这一行只有0到9.+.*这12种字符. 输出: 输出只有一行,包含一个整数,表示这个表达式的值.注意:当答案长度多于4位时,请只输出最后4位,前导0不输出. 输入示例: 1+1*3+4 输出示例: 8 数据范围:0≤表达式中加法运算符和乘法运算符的总数≤100000

刷过一题之NOIP2013花匠

花匠栋栋种了一排花,每株花都有自己的高度.花儿越长越大,也越来越挤.栋栋决定把这排中的一部分花移走,将剩下的留在原地,使得剩下的花能有空间长大,同时,栋栋希望剩下的花排列得比较别致.具体而言,栋栋的花的高度可以看成一列整数h1,h2, … ,hn.设当一部分花被移走后,剩下的花的高度依次为g1,g2, … ,gm,则栋栋希望下面两个条件中至少有一个满足:       注意上面两个条件在m=1时同时满足,当m>1时最多有一个能满足.请问,栋栋最多能将多少株花留在原地. 输入: 第二行包含n个整数,

P1965 转圈游戏

洛谷——P1965 转圈游戏 题目描述 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 号位置上的小伙伴顺

2019.7.10 校内测试题 转圈游戏

题目 转圈游戏(circle.cpp,1s,512MB) [问题描述]: n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位 置编号,从 0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……,依此类推. 游戏规则如下:每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1 号位置,……,依此类推,第 n−m 号位置上的小伙伴 走到第 0 号位置,第 n-m+1 号位置上的小伙伴走到第 1

Luogu P1965 转圈游戏

Luogu P1965 转圈游戏 考场上遇到这种题,一定要画图推一下. 不难得到\(ans=(x+m\times 10^k)mod n\). 还有就是用同余定理时一定要仔细思考一下,然后该打快速幂就打. #include<bits/stdc++.h> using namespace std; int n,m,k,x; long long ans; long long quickPower(int b,int p,int k) { long long ans=1; if(!p) { ans=1%

3285 转圈游戏 2013年NOIP全国联赛提高组

3285 转圈游戏 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……,依此类推.游戏规则如下:每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1 号位置,……,依此类推