洛谷 P1965 转圈游戏
发布日期:2021-07-27 13:45:16
浏览次数:1
分类:技术文章
本文共 1004 字,大约阅读时间需要 3 分钟。
题目描述
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 号小伙伴最后走到了第几号位置。
输入输出格式 输入格式:输入文件名为 circle.in。
输入共 1 行,包含 4 个整数 n、m、k、x,每两个整数之间用一个空格隔开。
输出格式:
输出文件名为 circle.out。
输出共 1 行,包含 1 个整数,表示 10
k 轮后 x 号小伙伴所在的位置编号。
输入输出样例
输入样例#1:10 3 4 5
输出样例#1:
5
说明
对于 30%的数据,0 < k < 7;
对于 80%的数据,0 < k < 10^7;
对于 100%的数据,1 < n < 1,000,000,0 < m < n,1 ≤ x ≤ n,0 < k < 10^9
快速幂。很简单。
语文不好的我看了半天才读懂题。 只要求出总共的距离然后加上原来的位置,模一圈的长度就行了。#include#include using namespace std;int n,m,k,x;long long ans;long long pow(int x,int p)//快速幂 { if(p==0) return 1; long long tmp=pow(x,p/2)%n; tmp=(tmp*tmp)%n; if(p%2==1) tmp=(tmp*x)%n; return tmp;}int main(){ scanf("%d%d%d%d",&n,&m,&k,&x); ans=pow(10,k); ans*=m; ans+=x; ans%=n; printf("%lld\n",ans); return 0;}
转载地址:https://blog.csdn.net/Rlt1296/article/details/51918618 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月01日 08时36分03秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
cocos2dx-js 初探 整体流程helloworld.html分析
2019-04-26
四十三 毕设(下)我在软件园的那些日子里
2019-04-26
如何对apk进行签名
2019-04-26
四十四 老李来了 我在软件园的那些日子里
2019-04-26
Android zip文件压缩解压缩
2019-04-26
Android清除本地数据缓存代码
2019-04-26
一个listview的拖动滚动效果
2019-04-26
android 终于搞定了判断ScrollView是否滚动到底部!
2019-04-26
四十五 意外的饭局 我在软件园的那些日子里
2019-04-26
四十六 这谁啊谁 我在软件园的那些日子里
2019-04-26
第一章 厕所被揍 校园江湖
2019-04-26
android 滑动侧边栏 SlideMenu 源码分析 以及使用手册
2019-04-26
android bitmap溢出问题完美解决方案
2019-04-26
如何远端调试framework和APK
2019-04-26
四十七 停电与打牌(上) 我在软件园的那些日子里
2019-04-26
欢迎使用CSDN-markdown编辑器
2019-04-26
Android 标签云 LabelView
2019-04-26
第二章 一波未平 校园江湖
2019-04-26
四十八 停电与打牌(中) 我在软件园的那些日子里
2019-04-26