什么是移动网站开发,wordpress 招聘模板,开发购物平台网站费用,关于网站的推广文章题意
对一个长度#xff0c;最大值为n的排列 构造出其恰好有k个GCD(i,a[i])1 的排列
n1e5;分析
由于每个大于1的数与自己的gcd必然1
所以构造大于1的gcd可以用i与i去构造
那么还有就是相邻的两个数的gcd必然等于1
任何数与1的gcd都等于1
所以让k个数 从2开始…题意
对一个长度最大值为n的排列 构造出其恰好有k个GCD(i,a[i])1 的排列
n1e5;分析
由于每个大于1的数与自己的gcd必然1
所以构造大于1的gcd可以用i与i去构造
那么还有就是相邻的两个数的gcd必然等于1
任何数与1的gcd都等于1
所以让k个数 从2开始使得a[i] i 并且后面的数填比自己下标大1的数
多的从前面补上 当k1n的情况都有解code
#includebits/stdc.h
using namespace std;
int a[100010];
int main()
{int n,k;ios::sync_with_stdio(0);scanf(%d%d,n,k);if(kn)puts(-1);else{if(k!n-1){int c,i,tag 2;for(c1,i 2;ck;c,i){a[i]i;}ci;for(;in;i){a[i] (i1n?n:(i1)%n); //如果下表为n 注意填n不是0}a[1]c;for(int i1;in;i)printf(%d%c,a[i],in?\n: ); }else{for(int i1;in;i)printf(%d%c,i,in?\n: );}}return 0;
}