题目链接:http://cogs.pro:8081/cogs/problem/problem.php?pid=vJimmkqjW

【题目描述】

思路:简单模拟,重点在于如何求这个轮数,由于k的范围过大,放在指数上更无法在规定时间内算出答案,因此用到快速幂处理,快速幂如下:

顾名思义,快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。

——摘自百度百科

大概意思就是,把一个数的指数分解,变成2的几次幂相加,用机器码(即二进制形式)表示,用位运算加快速度。

代码如下:

 #include "iostream"
#include "cstdio"
#define ll long long
using namespace std;
int n;
ll pw(ll x, ll k)
{
ll ans = ;
while (k)
{
if (k & )
ans = (ans * x) % n;
x = (x * x) % n;
k >>= ;
}
return ans % n;
} int main()
{
freopen("CircleNOIP2013.in", "r", stdin);
freopen("CircleNOIP2013.out", "w", stdout);
ll m, k, x;
cin >> n >> m >> k >> x;
cout << (x + (m * pw(, k) % n)) % n << endl;
return ;
}

快速幂 -- cogs1437 转圈游戏的更多相关文章

  1. [快速幂][NOIP2012]转圈游戏

    转圈游戏 题目描述 n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置, ...

  2. 快速幂——while理解&&[P1965] 转圈游戏

    快速幂--while理解 \[a^k\] 把k转成2进制 \[k=2^n*p[n]+2^(n-1)*p[n-1]+...+2^1*p[1]+2^0*p[0]\] \[a^k=a^(2^n*p[n]+2 ...

  3. NOIP 2013提高组day 1 T 1转圈游戏 快速幂

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

  4. NOIP2013T1 转圈游戏 快速幂

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

  5. noip2013提高组day1第一题-转圈游戏——快速幂典型应用

    所谓的快速幂: // 计算 m^n % k 的快速幂算法 int quickpow(int m,int n,int k) { ; ) { ) b = (b*m)%k; n = n >> ; ...

  6. 【NOIP2013】转圈游戏 快速幂

    题目大意:给你四个整数$n,m,k,x$,求$(x+m\times 10^k)%n$. 直接一个快速幂就好了,注意开$long\ long$. #include<bits/stdc++.h> ...

  7. luoguP1965 转圈游戏(NOIP2013)(快速幂)

    luogu P1965 转圈游戏 题目 #include<iostream> #include<cstdlib> #include<cstdio> #include ...

  8. Java实现 蓝桥杯 算法提高 转圈游戏(暴力快速幂)

    试题 算法提高 转圈游戏 问题描述 n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在 ...

  9. bzoj 3240: [Noi2013]矩阵游戏 矩阵乘法+十进制快速幂+常数优化

    3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 613  Solved: 256[Submit][Status] ...

随机推荐

  1. texture2dArray

    https://medium.com/@calebfaith/how-to-use-texture-arrays-in-unity-a830ae04c98b http://cdn.imgtec.com ...

  2. Java 实现大文件切割并生成多个文件

    话不多说,直接上代码 import java.io.*; /*** * 分割大文件 * ( * SQL 文件太大(insert),第三方工具无法一次性读取,进行分割 * 生成 一个一个文件 * ) * ...

  3. modbus_百度经验

    转自:https://jingyan.baidu.com/article/2c8c281dbdfa9f0009252a74.html 图片都没了,百度真差劲---还是博客园好!!! ModBus通讯规 ...

  4. HDU 6073 - Matching In Multiplication | 2017 Multi-University Training Contest 4

    /* HDU 6073 - Matching In Multiplication [ 图论 ] | 2017 Multi-University Training Contest 4 题意: 定义一张二 ...

  5. Codeforces Round #455 (Div. 2) 909E. Coprocessor

    题 OvO http://codeforces.com/contest/909/problem/E CF455 div2 E CF 909E 解 类似于拓扑排序地进行贪心, 对于 Ei=0 并且入度为 ...

  6. Python2.x与3​​.x版本区别Ⅱ

    除法运算 Python中的除法较其它语言显得非常高端,有套很复杂的规则.Python中的除法有两个运算符,/和// 首先来说/除法: 在python 2.x中/除法就跟我们熟https://www.x ...

  7. C# params object[] args 可以传多个参数,可以不限制类型

    http://blog.csdn.net/wslyy99/article/details/1836486 C#参数数组(params)的使用方法 http://www.vcsos.com/articl ...

  8. 【线性代数】3-5:独立性,基和维度(Independence,Basis and Dimension)

    title: [线性代数]3-5:独立性,基和维度(Independence,Basis and Dimension) categories: Mathematic Linear Algebra ke ...

  9. Go 通道(channel)与协程间通信

    协程间通信 协程中可以使用共享变量来通信,但是很不提倡这样做,因为这种方式给所有的共享内存的多线程都带来了困难. 在 Go 中有一种特殊的类型,通道(channel),就像一个可以用于发送类型化数据的 ...

  10. Golang使用RabbitMQ消息中间件amqp协议

    "github.com/streadway/amqp" Publish发布 // amqp://<user>:<password>@<ip>:& ...