首页 > 其他 > 详细

1617:转圈游戏 ybt

时间:2019-08-20 21:42:06      阅读:99      评论:0      收藏:0      [点我收藏+]

 

1617:转圈游戏


时间限制: 1000 ms         内存限制: 524288 KB
提交数: 540     通过数: 326

【题目描述】

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

游戏规则如下:每一轮第 0技术分享图片0 号位置上的小伙伴顺时针走到第 m技术分享图片m 号位置,第 1技术分享图片1 号位置小伙伴走到第 m+1技术分享图片m+1 号位置,……,依此类推,第 nm技术分享图片n−m 号位置上的小伙伴走到第 0技术分享图片0 号位置,第 nm+1技术分享图片n−m+1 号位置上的小伙伴走到第 1技术分享图片1 号位置,……,第 n1技术分享图片n−1 号位置上的小伙伴顺时针走到第 m1技术分享图片m−1 号位置。

现在,一共进行了 10技术分享图片k技术分享图片技术分享图片10k 轮,请问 x技术分享图片x 号小伙伴最后走到了第几号位置。

【输入】

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

【输出】

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

【输入样例】

10 3 4 5

【输出样例】

5
仔细观察一下就可以发现这道题其实很简单就是累加上去之后对n取模。
但是计算过程中的取模是个坑
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll k,n,m,x;
inline ll quickpow(ll a,ll b)
{
    ll ans=1;
    while(b)
    {
        if(b&1LL) ans=ans*a%n;
        a=a*a%n;
        b>>=1LL;
    }
    return ans;
}
int main()
{
    scanf("%lld %lld %lld %lld",&n,&m,&k,&x);
    printf("%lld\n",(m%n*quickpow(10,k)+x)%n);
    return 0;
}

 


1617:转圈游戏 ybt

原文:https://www.cnblogs.com/smartljy/p/11385461.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!