题意: 给出一个数组 a[],要你构造出一个互质的字典序最小的数组 b[],且 b[] 的字典序要大于等于 a[] 。 解析: 预处理素数,然后对于第 i 个数,它应该不包含前面 i-1 个数含有的质因子,满足这个条件后,我们贪心取最大的即可。且如果当前已经大于数组 a[] 了,那后面的就都贪心取最小的质数。
#include#define ll long long#define inf 0x3f3f3f3f#define pb push_back#define rep(i,a,b) for(int i=a;i<=b;i++)#define rep1(i,b,a) for(int i=b;i>=a;i--)using namespace std;const int N = 2e6+100;const int M = 2000005;bool mark[M],vis[M];int pp[N], cnt, n, a[N], b[N];void sieve_prime()//素数筛{ memset(mark, true, sizeof(mark)); mark[0] = mark[1] = false; for(int i=2; i<=sqrt(M); i++) { if(mark[i]) { for(int j=i*i; j >n; rep(i,1,n) cin>>a[i]; //cout<<123< a[i]) flag = true; break; } j++; } } } rep(i,1,n) cout< <<' '; return 0;}