PID736(rqnoj)

题目描述

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行,包含一个整数,表示10^k轮后x号小伙伴所在的位置编号。

input

10 3 4 5

output

5

注释

对于 30% 的数据, 0<k<7;

对于 80% 的数据, 0<k<10^7;

对于 100% 的数据,1<n<1,000,000,0<m<n,0≤x≤n-1,0<k<10^9。

思路:第10^k轮后第0号小伙伴的位置为(m*10^k)%n,第x号小伙伴的位置为(x+(m*10^k)%n)%n

#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;

ll npow(ll x,ll n,ll mod)
{
    ll res=1;
    while(n>0)
    {
        if(n&1)
            res=(res%mod)*(x%mod)%mod;
        x=(x%mod)*(x%mod)%mod;
        n>>=1;
    }
    return res;
}

ll n,m,k,x;
int main(){

    scanf("%lld%lld%lld%lld",&n,&m,&k,&x);
    ll res=npow(10,k,n);
    res=(m*res)%n;
    res=(res+x)%n;
    printf("%lld",res);
    return 0;
}
时间: 2024-11-02 23:34:25

PID736(rqnoj)的相关文章

RQNOJ 329 刘翔!加油!:01背包

题目链接:https://www.rqnoj.cn/problem/329 题意: 刘翔有n封信,每封信都有自己的欣赏价值value[i].消耗时间time[i].消耗体力h[i].和得到的鼓舞w[i]. 观看信件必须按照价值递增(大于)的顺序观看,不一定需要全看. 可是,刘翔在伤病中,时间和体力分别为t,m,同时看完之后体力不能为0. 问你受到的鼓舞最大为多少. 题解: 这道题里value[i]真的没有用... 表示状态: dp[i][j][k] = max encouraging i:考虑到

RQNOJ 201 奥运大包围:LIS + 拼链成环

题目链接:https://www.rqnoj.cn/problem/201 题意: 开始时n(n<=1000)个人手拉手围成一个圈. 后来这些人中的一些按顺序向里面出圈形成一个新圈.从而使原圈形成一个从高到低,最低与最高连接的圈. 新圈重复相同的操作,直到没有人要出圈为止. 问最少要形成多少个这样的圈. 题解: (1)拼链成环: 对于一个环,可以用两条由环拆开的链拼在一起表示. 例如:有一个环为"1,2,3,4"(1和4连在一起),则可以表示为"1,2,3,4,1,2,

【单调队列】【cogs825】【RQNOJ 167】免费午餐

825. [RQNOJ 167] 免费午餐 ★☆ 输入文件:lunch.in 输出文件:lunch.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] 为了增加顾客,Sally的店铺决定提供免费午餐,顿时门庭若市,但是不久Sally的原材料不足了-.因此Sally决定公布一项决定:凡是来本店吃免费午餐的,一天吃能吃一次,吃的数量必须比上一次吃的少,且免费午餐将只有N个种类任君选择,为了能吃到最多的免费午餐,你将如何安排每日吃的数量呢? [输入文件] 第一行一个数N,表示免费

【解题报告】[动态规划]RQNOJ PID2 / 开心的金明

原题地址:http://www.rqnoj.cn/problem/2 解题思路:背包问题. 状态转移方程:DP[i][j]=max(DP[i-v[j]][j-1]+p[j]*v[j],DP[i][j-1]) DP[i][j]表示最多话费i的钱,购买前j+1个物品所能达到的最大价值. 解题代码: 1 #include<stdio.h> 2 #include<iostream> 3 #include<algorithm> 4 using namespace std; 5 i

RQNOJ 57 找啊找啊找GF:01背包

题目链接:https://www.rqnoj.cn/problem/57 题意: sqybi在七夕这天太无聊了,所以他想去给自己找GF. 总共有n个MM. 搞定第i个MM要花费rmb[i]块大洋.rp[i]的人品.tim[i]的时间. 现在sqybi有m块大洋.r个人品. 问你在泡到MM的数量最多的情况下,所用的最短时间是多少. 题解: 表示状态: dp[i][j][k][p] = min cost time i:考虑到第i个MM j:花费的rmb k:花费的rp p:已经搞定的MM数量 找出答

RQNOJ 342 最不听话的机器人:网格dp

题目链接:https://www.rqnoj.cn/problem/342 题意: DD 有一个不太听话的机器人,这个机器人总是会有自己的想法,而不会完全遵守 DD 给它的指令. 现在 DD 在试图命令机器人走迷宫.迷宫是一个 N*N 个格子组成的区域,格子自左上角到右下角从 (1,1) 到 (N,N) 编号.第 i 行.第 j 列的格子编号为 (i,j).迷宫中的某些区域是障碍物,机器人不能移动到那里. DD 给了机器人 M 条指令,指令的类型包括"前进一步""后退一步&q

RQNOJ 429 词链:单调栈

题目链接:https://www.rqnoj.cn/problem/429 题意: 如果一张由一个词或多个词组成的表中,每个单词(除了最后一个)都是排在它后面的单词的前缀,则称此表为一个词链. 如:i,int,integer. 给你一堆按字典序排好的字符串,问你最长的词链有多长(词链中的字符串个数). 题解: 单调栈. 找出单调性: 对于栈内的元素,从栈底到栈顶为单调,形成一个词链. 找出答案: 扫一遍给出的字符串,栈的最大高度即为答案. 维护单调性: 因为字符串按字典序排好,已经达到了是单调性

RQNOJ 671 纯洁的买卖:无限背包

题目链接:https://www.rqnoj.cn/problem/671 题意: ALEJ要通过倒卖东西来赚钱. 现在他有m元经费. 有n种物品供他选择,每种物品数量无限. 第i件物品的买入价为c[i],卖出价为r[i],每卖出一件物品i后,要交c[i]的税. 问:一次买卖之后,经费最多有多少. 题解: 注:(1)"买"和"卖"是有顺序的. 也就是说,收购一件物品所得到的"未来利润"并不能当作现在的经费来用. (2)"缴税"

RQNOJ 622 最小重量机器设计问题:dp

题目链接:https://www.rqnoj.cn/problem/622 题意: 一个机器由n个部件组成,每一种部件都可以从m个不同的供应商处购得. w[i][j]是从供应商j处购得的部件i的重量,c[i][j] 是相应的价格. 试设计一个算法,给出总价格不超过d的最小重量机器设计. 题解: 表示状态: dp[i][j] = min weight i:考虑到第i个零件 j:当前花费 找出答案: min dp[n][j] (0<=j<=d) 如何转移: 对于当前零件i,枚举不同的供应商j,转移