G - NEW RDSP MODE I

NBUT - 1225

题意:

​ 给你三个数n,n,n,mmm,xxx。代表刚开始有1到n1 到n1到n刚好n个数,现在让你将序列变换mmm次,问你变换mmm次之后前xxx个的值;

​ 序列每一次变换的规则:将其中奇数位置的数取出,按顺序放在最后面。

思路:

​ 因为变换的规则比较简单,所以我们可以根据这次位置 计算出 变换前的位置,向上推导m​m​m​次即可,那么我们可以先写出变换公式。

假设位置x变换前在位置last,那么我们不难推出下列公式:

  • 如果 x&lt;=⌊n/2⌋​x&lt;=\lfloor n/2 \rfloor​x<=⌊n/2⌋​ 则有 last=2∗x​last=2*x​last=2∗x​

  • 否则 则有last=2∗(x−⌊n/2⌋)−1last=2*(x-\lfloor n/2 \rfloor)-1last=2∗(x−⌊n/2⌋)−1

这样规律显示的不够清楚,我们可以这样写

  • 当n为偶数时候:

    • 如果x&lt;=n​x&lt;=n​x<=n​,则有 last=2∗x​last=2*x​last=2∗x​.
    • 否则last=2∗(x−n/2)−1=2∗x−n−1​last=2*(x-n/2)-1=2*x-n-1​last=2∗(x−n/2)−1=2∗x−n−1​
  • 当n为奇数的时候:

    • 如果x&lt;=(n+1)/2x&lt;=(n+1)/2x<=(n+1)/2, 则有last=2∗xlast=2*xlast=2∗x
    • 否则last=2∗(x−(n+1)/2)−1last=2*(x-(n+1)/2)-1last=2∗(x−(n+1)/2)−1 即 last=2∗x−nlast=2*x-nlast=2∗x−n

​ 那么我们可以将位置xxx向上推导mmm次,最后得到的位置就是要求的位置xxx的值。但是mmm太大,这种根本不可行,我们现在试图找一个更好的公式。

​ 我们有没有发现一个规律,**当n​n​n​为奇数的时候 last​last​last​ 可以表示为 last=2∗x%n​last=2*x\ \%n​last=2∗x %n​ ,(如果last=0​last=0​last=0​表示last=n);**那么我们向上求m​m​m​次,则乘以2m​2^m​2m​取余n​n​n​即可 (快速幂不难做到这一点)。但是当n​n​n​位偶数的时候怎么办呢?我们发现当n​n​n​位偶数时n个数​n个数​n个数​的结果与n+1​n+1​n+1​的结果一模一样。

因为第n+1​n+1​n+1​个数每次都是最后一个奇数,他总会放在最后面,不影响前n​n​n​个数的相对顺序

​ 所以我们当n​n​n​为偶数时,我们可以把n+1​n+1​n+1​变为奇数,然后位置x​x​x​的转换m​m​m​次前的位置为 x∗2mx*2^m%n+1​x∗2m 。

所以程序思想分下面三步:

  • 如果nnn为偶数就让n=n+1n=n+1n=n+1
  • 转换mmm次后位置xxx的值为val=x∗2mval=x*2^m%nval=x∗2m
  • 如果valvalval为000则输出nnn,否则输出valvalval。

代码:

#include<queue>
#include<iostream>
#include<string.h>
#include<cstdio>
#include<iostream>
#include<algorithm>
#define mset(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef pair<int,int> P;
typedef long long ll;
const int maxn=2e4+100;
int t;
ll quickPow(ll a,ll b,ll mod){ll ans=1ll;while(b){if(b&1) ans=ans*a%mod;a=a*a%mod;b>>=1;}return ans;
}
int main()
{ll n,m,x,ans;while(cin>>n>>m>>x){if(n%2==0)   n++;ll mid=quickPow(2,m,n);for(ll i=1;i<=x;++i){if(i>1)cout<<" ";ans=i*mid%n;if(ans==0)cout<<n;elsecout<<ans;}puts("");}return 0;
}

NBUT1225 NEW RDSP MODE I(快速幂,规律):相关推荐

  1. NBUT1225 NEW RDSP MODE I(快速幂,规律)

    题目: [1225] NEW RDSP MODE I 时间限制: 1000 ms 内存限制: 131072 K 问题描述 Little A has became fascinated with the ...

  2. NBUT 1225 NEW RDSP MODE I (规律+快速幂)

    [1225] NEW RDSP MODE I 时间限制: 1000 ms 内存限制: 131072 K 问题描述 Little A has became fascinated with the gam ...

  3. NBUT 1225 NEW RDSP MODE I(找规律)(快速幂)

    NEW RDSP MODE I 问题描述 Little A has became fascinated with the game Dota recently, but he is not a goo ...

  4. NEW RDSP MODE I (快速幂)

    题目: 问题 : NEW RDSP MODE I 题目描述 Little A has became fascinated with the game Dota recently, but he is ...

  5. 保研机试——2数学问题(简单数学、最大公约/最小公倍、分数运算、素数、质因子分解、快速幂、高精度问题、常见数学公式总结、规律神器OEIS)

    1 简单数学 2 最大公约/最小公倍 3 分数运算 4 素数 5 快速幂 5 高精度问题 6 常见数学公式总结 7 规律神器OEIS 1 简单数学 (1)同余模定理:所谓的同余,顾名思义,就是许多的数 ...

  6. ZOJ3785 What day is that day? 快速幂+找规律

    点击打开链接 It's Saturday today, what day is it after 11 + 22 + 33 + ... + NN days? Input There are multi ...

  7. 【快速幂+中等难度】Calculation 哈工大HITOJ2901

    这些天好颓啊..都没有A题,只是各种等着填的坑..简直.. 这道题....其实是快速幂模板题..为了学习矩阵快速幂,顺手复习下快速幂... 哈工大的OJ其实还挺友好的.速度也快..赞一个.. 翻译 给 ...

  8. 51nod 算法马拉松18 B 非010串 矩阵快速幂

    51nod 算法马拉松18 B 非010串 矩阵快速幂 非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串 ...

  9. 一文彻底搞懂快速幂(原理、实现、矩阵快速幂)

    前言 大家好,我是bigsai,之前有个小老弟问到一个剑指offer一道相关快速幂的题,这里梳理一下讲一下快速幂! 快速幂是什么? 顾名思义,快速幂就是快速算底数的n次幂.你可能疑问,求n次幂算n次叠 ...

最新文章

  1. ad中电容用什么封装_干货 | 为什么单相电机要用电容,三相电机不需要电容?...
  2. linux 内核配置raid,在 Linux VM 上配置软件 RAID - Azure Virtual Machines | Microsoft Docs
  3. 机器学习中用到的概率知识_机器学习中有关概率论知识的小结
  4. 2014多校第一场A题 || HDU 4861 Couple doubi
  5. WEB文件上传之apache common upload使用(一)
  6. ubuntu 打包压缩
  7. php 查询键名是否存在,PHP array_key_exists():检测键名是否位于数组中
  8. 软件测试漫谈之谈谈技术之外的事情
  9. 如何在Angular 10中生成QR码
  10. MySQL深度剖析之索引专题(2021)
  11. [专栏精选]Unity动画系统的RootMotion
  12. 接雨水12 · Trapping Rain Water12
  13. Java中方法中的参数传递
  14. mt管理器小白破解之路-基础篇第一课
  15. 程序员的有个坏习惯!
  16. 软件开发公司怎么选择比较好?-链环科技
  17. PaddlePaddle - 人脸关键点检测课程笔记
  18. 为什么火狐浏览器打开默认是hao123
  19. php计算三角形的面积,PHP实现的简单三角形、矩形周长面积计算器分享
  20. TUTK[MediaSDK][iOS]没有声音或声音异常

热门文章

  1. android 发广播屏蔽home键,如何在Android App中屏蔽(拦截)Home按键及其他按键
  2. paypal的发展 总结笔记
  3. 生产者消费者模型实现方式:管程法,信号灯法
  4. 逍遥安卓能安装在虚拟服务器,逍遥安卓模拟器安装环境有哪些要求?
  5. 【苹果推??iMessage群发设置内容参数】什么是苹果推信?什么是苹果推?什么是日历推
  6. 高考大数据:全国31省高考难度,哪个才是地狱模式?
  7. 企业与组织仍然没有实现无纸化的三大原因
  8. 艾司博讯:拼多多网店账号出现异常该怎么解决?
  9. table内容超长自动隐藏,鼠标放置后浮动显示全部内容
  10. c语言转义字符(c语言转义字符是什么意思)