蓝桥杯每日一题:转圈游戏(快速幂)

何为快速幂:

给定a,b,p; 范围<0 a,b,p<= 2*10^9;快速的求出a^b % p的答案;

代码模板:

cpp 复制代码
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
typedef long long LL;
int a,k,p;
int T;

int qmi(int a,int k,int p)
{
    LL res = 1 % p;
    while(k)
    {
        if(k & 1) res = res * a % p;
        k >>= 1;
        a = (LL)a * a % p;
    }
    return res;
}


int main()
{
    cin>>T;
    while(T--)
    {
        cin>>a>>k>>p;
        cout<<qmi(a,k,p)<<endl;
    }
    return 0;
}

题目描述:

n 个小伙伴(编号从 00 到 n−1)围坐一圈玩游戏。

按照顺时针方向给 n 个位置编号,从 00 到 n−1。

最初,第 00 号小伙伴在第 00 号位置,第 11 号小伙伴在第 11 号位置,...,依此类推。

游戏规则如下:每一轮第 00 号位置上的小伙伴顺时针走到第 m 号位置,第 11 号位置小伙伴走到第 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 号小伙伴所在的位置编号。

数据范围

1<n<10^6,

0<m<n,

1≤x≤n,

0<k<10^9

输入样例:
复制代码
10 3 4 5
输出样例:
复制代码
5

解题思路:

可以画一个0-5的圈,m为2,0初始坐标为0,移动一次后为2,两次后4,三次恢复原位置。可以得到公式位置 = x + m * y % n (x为起始坐标,y为次数);
题中y为10^k,我们可以直接先求10^k%n的快速幂res,最后结果 = x + res * m % n;

参考代码:

cpp 复制代码
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
typedef long long LL;
int n,m,k,x;

LL qmi(int a,int k)
{
    LL res = 1 % n;
    while(k)
    {
        if(k & 1) res = res * a % n;
        k >>= 1;
        a = a * a % n;
    }
    return res;
}

int main()
{
    cin>>n>>m>>k>>x;
    
    LL ans = qmi(10,k);
    ans = x + m * ans;
    cout<<ans%n<<endl;
    return 0;
}
相关推荐
吴_知遇22 分钟前
【华为OD机试真题】428、连续字母长度 | 机试真题+思路参考+代码解析(E卷)(C++)
开发语言·c++·华为od
LaoWaiHang39 分钟前
MFC案例:使用键盘按键放大、缩小窗口图像的实验
c++·mfc
山北雨夜漫步1 小时前
机器学习 Day14 XGboost(极端梯度提升树)算法
人工智能·算法·机器学习
到底怎么取名字不会重复1 小时前
Day10——LeetCode15&560
c++·算法·leetcode·哈希算法·散列表
chuxinweihui1 小时前
数据结构——二叉树,堆
c语言·开发语言·数据结构·学习·算法·链表
freexyn2 小时前
Matlab自学笔记五十一:(推荐)输入参数的数量和可变数量的输入
笔记·算法·matlab
陈大大陈2 小时前
基于 C++ 的用户认证系统开发:从注册登录到Redis 缓存优化
java·linux·开发语言·数据结构·c++·算法·缓存
纪元A梦2 小时前
华为OD机试真题——通过软盘拷贝文件(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
java·javascript·c++·python·华为od·go·华为od机试题
数据分析螺丝钉2 小时前
LeetCode 252 会议室 III(Meeting Rooms III)题解与模拟面试
算法·leetcode·职场和发展
小李独爱秋2 小时前
动态哈希映射深度指南:从基础到高阶实现与优化
数据结构·算法·哈希算法