首页 > 其他分享 >每日打卡-7

每日打卡-7

时间:2023-04-18 21:13:51浏览次数:36  
标签:m% 走到 位置 res 每日 小伙伴 打卡 LL

一.问题描述

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 号位置。

现在,一共进行了1e4轮,请问 x 号小伙伴最后走到了第几号位置。

二.设计思路

他们围成一个圈,走第一轮, x 会走到 x + m%n 号,走第二轮, x 会走到 x + 2 * m%n 号,以此类推,第10的k次方,会走到 x + 10^k * m%n。难点就在于求10的k次方。

所以我们写一个快速幂的函数

三.流程图

四.伪代码 

1

五.代码实现 

快速幂

1LL pow_mod(LL a, LL b){
    LL res = 1;
    while(b > 0){
        if(b & 1){
            res = res * a % n;
        }
        a = a * a % n;
        b >>= 1;
    }
    return res;
}

代码

#include<bits/stdc++.h>
using namespace std;
int n, m, k, x;
typedef long long LL;
LL pow_mod(LL a, LL b){
    LL res = 1;
    while(b > 0){
        if(b & 1){
            res = res * a % n;
        }
        a = a * a % n;
        b >>= 1;
    }
    return res;
}
int main(){
    cin >> n >> m >> k >> x;
    cout << (x + pow_mod(10, k) * m % n) % n;
    return 0;
}

 

标签:m%,走到,位置,res,每日,小伙伴,打卡,LL
From: https://www.cnblogs.com/leapssisbird/p/17331106.html

相关文章

  • 编程打卡:C语言趣味编程习题做
    编程打卡:C语言趣味编程习题做存钱问题问题描述给定不同期限档次整存整取的月利率,期限和本金,求出使利息最大的存款方案。设计思路遍历每种可能的存钱方案,求出利息最大的方案,然后输出。流程图graphA[开始]-->B[定义各种各样的变量]-->C[遍历所有存款方案,保存利率最大的......
  • 每日打卡
    最佳存款问题:问题描述:银行一年零存整取的利率为0.63%某人手里有一笔钱,存入银行,他想每年取1000元,问他最开始存了多少钱问题分析:用逆向思路,从第五年末入手,第五年末正好取走最后1000元,所以第五年存款数为1000/(1+12*0.0063)则前四年亦是如此代码#include<stdio.h>main(){    ......
  • 打卡第三天
    一、问题描述: 从键盘上输入4个整数,输出其中的最小值二、设计思路:从键盘上输入四个整数,然后找到其中的最小值,并将其输出。具体实现的方法是,先定义四个整数变量a、b、c、d,然后使用cin语句从键盘上依次读入这四个整数。接下来,我们可以用if语句来比较这些数,并找到其中的最小值,将其赋......
  • 4.18打卡
    一、问题描述:一辆卡车违反交通规则,撞人后逃跑。现场有三人目击该事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。二、设计思路:该......
  • 4/18打卡 复数的输入输出和加减乘除重载
    classComplex{doublereal;doubleimag;public:friendistream&operator>>(istream&is,Complex&c);friendostream&operator<<(ostream&os,constComplex&a);Complex(){real=0;......
  • 建民の每日打卡7
    一、问题描述银行月利息0.63%,某人在第一年存了一笔钱,每年年底取出1000,五年后正好取完,求第一年存了多少钱?二、流程设计1.从最后一年向前递推,年末加上1000,除以年利率求出去年余款2.循环四次完成递推3.输出答案三、流程图设计 四、代码实现#include<iostream>usingnamesp......
  • 天天打卡一小时——5
    一.问题描述读入一系列整数,统计出正整数和负整数的个数,读到0结束二.设计思路1.输入一组整数2.包含正整数和负整数3.在每次读完一个数后需要进行判断4.非0接着读,为0则结束程序5.使用while语句三.程序流程图 四.代码实现#include<iostream>usingnamespacestd;int......
  • 2023.4.17每日总结
    <!DOCTYPEhtml><html><head><metacharset="utf-8"/><title>首页</title><linkrel="stylesheet"href="css/page.css"/><scripttype="text/......
  • c++打卡第八天
    一、问题描述。   我国古代有一种说话叫三天打鱼两天晒网,如果一个人从1990年1月1日开始,开始三天打鱼两天晒网,问输入一个年月日,此时他是在打鱼还是晒网。二、设计思路。①、我们可以通过计算从输入日期到1990年1月1日总共有多少天,总天数除余周期五,如果结果为1.2.3则此人此......
  • 建民打卡日记4.18
    一、问题描述二、设计思路三、程序流程图四、代码实现#include<iostream>#include<math.h>usingnamespacestd;intmain(){ doublenewt(floata,floatb,floatc,floatd); floata,b,c,d,x; cin>>a>>b>>c>>d; x=newt(a,b,......