codeforces 66D D. Petya and His Friends( 数论+构造)

来源:互联网 发布:手机qq变声软件 编辑:程序博客网 时间:2024/05/18 03:57

题目链接:

codeforces 66D


题目大意:

要求构造出一个满足下列条件的数列:
这里写图片描述


题目分析:

  • 首先筛出100个素数
  • 然后先给这n个数每人一个素数(不同的)
  • 然后为了保证他们每两个之间的gcd都不等于1,那么我们找出6个素数(不同且没有用过的),然后将原数列分成四段,两两组合,组合在一起的用一个素数乘上去刷一遍,刷完之后依旧能够保证整个数列的gcd是1.
  • 注意3因为不够4个,所以要特判,2不能构造,也要特判。

AC代码:

#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <vector>#define MAX 1007using namespace std;typedef long long LL;int n;int mark[MAX];int ans[MAX];vector<int> v;void init (){    memset ( mark , -1 , sizeof ( mark ));    for ( int i = 2 ; i < MAX ; i++ )    {        if ( ~mark[i] ) continue;        if ( i != 2 && i != 3 && i != 5 && i != 7 && i != 11 && i != 13 )            v.push_back ( i );        for ( int j = 2*i ; j < MAX ; j += i )            mark[j] = i;    }}int gcd ( int a , int b ){    return !b?a:gcd(b,a%b);}int main ( ){    init ();    while ( ~scanf ("%d" , &n ) )    {        if ( n == 2 )        {            puts ( "-1" );            continue;        }        if ( n == 3 )        {            puts ( "99\n55\n11115");            continue;        }        for ( int i = 0 ; i < n ; i++ )            ans[i] = v[i];        for ( int i = 0 ; i < n/2 ; i++ )            ans[i] *= 2;        for ( int i = n/2 ; i < n ; i++ )            ans[i] *= 3;        for ( int i = 0 ; i < n/4 ; i++ )            ans[i] *= 5;        for ( int i = n/4*3 ; i < n ; i++ )            ans[i] *= 5;        for ( int i = n/4 ; i < n/4*3 ; i++ )            ans[i] *= 7;        for ( int i = 0 ; i < n/4 ; i++ )            ans[i] *= 11;        for ( int i = n/2 ; i < n/4*3 ; i++ )            ans[i] *= 11;        for ( int i = n/4 ; i < n/2 ; i++ )            ans[i] *= 13;        for ( int i = n/4*3 ; i < n ; i++ )            ans[i] *= 13;        for ( int i = 0 ; i < n ; i++ )            printf ( "%d\n" , ans[i] );    }}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 腰椎间盘突出的锻炼方法 腰椎间盘为什么会突出 腰椎间盘突出要注意哪些 腰椎间盘突出吃中药 腰椎间盘突出的腰带 腰椎间盘突出按摩器 腰椎间盘突出新疗法 腰椎间盘突出费用多少 腰椎间盘突出微创多少钱 腰椎间盘突出哪里医院好 腰椎间盘突出怎样按摩 腰椎间盘突出哪个医院好 腰椎间盘突出适合什么运动 腰椎间盘突出能自愈吗 腰椎间盘突出能复位吗 腰椎间盘突出手法复位 腰椎间盘突出能做瑜伽吗 霍华德腰椎间盘突出 腰椎间盘突出拍片能看出来吗 腰椎间盘突出去那家医院好 腰椎间盘突出能用按摩器吗 腰椎间盘突出专业医院 腰椎间盘突出应该看什么科 腰椎间盘突出要住院吗 腰椎间盘突出的微创疗法 腰椎间盘滑脱是怎么回事 腰椎间盘突出康复训练 腰椎间盘突出有什么好的办法 腰椎间盘突出 哪个医院 腰椎间盘突出中药方 腰椎间盘突出能游泳吗 腰椎间盘突出发病原因 腰椎间盘突出疼痛怎么缓解 腰椎间盘突出表现症状 怎样检查腰椎间盘突出 腰椎间盘突出并发症 腰椎间盘突出腿不麻 腰椎间盘突出用小针刀 腰椎间盘突出哪个医院较好 腰间盘膨隆 腰椎盘