玩游戏(game)

技术玩游戏(game) 玩游戏(game)玩游戏(game)玩游戏(game)
题目背景
x 正在玩游戏。
题目描述
x 有一个长度为 \(n\) 的数列 \(a\),还有一个长度为 \(n\) 的数列

玩游戏

玩游戏

玩游戏(game)

题目背景

x在玩游戏。

题目描述

x有一个长度为\(n\)的序列\(a\)和一个长度为\(n\)的序列\(x\),序列\(x\)正好是\(1\sim n\)的排列。

在\(0\)轮中,序列\(a_i=i,i\in [1,n]\)。

每下一轮,X都会执行一次操作。在最后一轮中将\(a_i\)替换为\(a_{x_i}\)。

同时,x还要求恰好在\(m\)轮次中排序\(a_i=i,i\in [1,n]\),即与\(0\)轮次处于同一状态,且没有\(t(1\le tm)\),这样在第一轮。

现在X要求你构造一个组合序列\(x\)。如果没有合法的序列\(x\),输出\(-1\)。

因为提问者懒得写spj,所以X想让你输出字典顺序最小的序列\(x\)。

输入格式

一行,两个正整数\(n,m\)。

输出格式

一行数字,即满足要求的最小字典顺序的序列。

样例

样例输入 1

8 7

样例输出 1

1 3 4 5 6 7 8 2

样例输入 2

8 8

样例输出 2

2 3 4 5 6 7 8 1

样例输入 3

8 9

样例输出 3

-1

数据范围与提示

对于\(20\%\),\ (1 \ le n \ le 10 3,1 \ le m \ le 10 7 \)

此外,对于\(10\%\),\(m=1\)的数据。

对于\(100\%\),\ (1 \ le n \ le 3 \乘以10 ^ 6,1 \ le m \ le 10 {14} \)

solution

题解

研究发现,如果一个数经过几轮后回到自身,那么这个数和过程中的那些数可以形成一个大小为\(b_i\)的环。

因此,这个问题就变成了构造一个任意长度、n和m的最小公倍数的序列b,并最小化它的字典顺序。

也就是满足:

\(1\le k,b_i\le n\)

\(b_1 b_2 b_3 \cdots b_k=n\)

\(\operatorname{lcm}(b_1,b_2,b_3,\cdots,b_k)=m\)

在满足\(1,2,3\)的前提下,字典顺序最小。

因此,我们可以把\(m\)分解成素因子,把相同基数的数相乘,让这些数成为数列\(b\)。如果没有足够的\(n\),我们可以补足\(1\)。

周期越大,越晚。当是周期的转折时,把\(t\)放在\(t b_i-1\)之后,可以证明此时字典顺序最小。

std

#包括牡蛎

#includecstdio

#包括算法

使用命名空间标准;

int n,p,q=1,cnt

长长m,ans[20],和;

int main()

{

scanf('%d%lld ',n,m);

for(long long I=2;I * I=m;(一)

{

if(m%i==0) p,ans[p]=1;

否则继续;

while(m%i==0)

{

ans[p]*=I;

m/=I;

}

sum=ans[p];

}

if(m!=1)

{

ans[p]=m;

sum=ans[p];

}

if(nsum)

{

printf('-1 \ n ');

返回0;

}

sort(ans 1,ans P1);

for(int I=1;I=n;(一)

{

if(I=n-和)

{

printf(“% d”,I);

继续;

}

碳纳米管;

if(cnt==ans[q])

{

CNT=0;

printf('%lld ',I-ans[q]1);

q;

}

else printf('%d ',I ^ 1);

}

返回0;

}

后话

吐槽

思维简单,代码容易写,没有癌症的小问题和新鲜问题。

总结

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/74737.html

(0)

相关推荐

  • MYSQL出现Space id in fsp header,but in the page header错误怎么办

    技术MYSQL出现Space id in fsp header,but in the page header错误怎么办这篇文章将为大家详细讲解有关MYSQL出现Space id in fsp header,but in

    攻略 2021年11月6日
  • Ajax Servlet在网络编程的应用是怎样的

    技术Ajax Servlet在网络编程的应用是怎样的这期内容当中小编将会给大家带来有关Ajax Servlet在网络编程的应用是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Aj

    攻略 2021年11月26日
  • 零钱通的钱怎么转到银行卡,零钱通可以转出到另一张银行卡

    技术零钱通的钱怎么转到银行卡,零钱通可以转出到另一张银行卡零钱通的钱转到银行卡具体步骤如下零钱通的钱怎么转到银行卡:1. 打开微信app,登录,进入我的页面中。2. 在我的页面中选择“支付”,点击“零钱”,在零钱界面进入

    生活 2021年10月25日
  • 居里温度,铁电材料的居里点是多少

    技术居里温度,铁电材料的居里点是多少铁的居里温度是770℃居里温度对于所有的磁性材料来说居里温度,并不是在任何温度下都具有磁性。一般地,磁性材料具有一个临界温度Tc,在这个温度以上,由于高温下原子的剧烈热运动,原子磁矩的

    生活 2021年10月28日
  • 视频网站首选美国服务器租用视频服务器美国

    技术视频网站首选美国服务器租用视频服务器美国随着观众对于视频质量和帧数的要求不断增高,很多传统的服务器已经很难满足用户的使用需求,因此现在大带宽的美国服务器成为了很多视频网站的首选,下面就来谈谈理由为什么视频流需要特殊类

    礼包 2021年12月17日
  • MySQL如何在线开启/关闭GTID

    技术MySQL如何在线开启/关闭GTID小编给大家分享一下MySQL如何在线开启/关闭GTID,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一

    攻略 2021年11月6日