リンク:https://codeforces.com/contest/1174/problem/C
質問の意味:
あなたは、整数を与えられている n個のn。すべての整数のための I Iから 2 2 N nは、正の整数割り当てる A iは、次の条件が成立するような愛。
- 整数の任意のペアに対して (I 、J )と(i、j)は、 I iおよび jは jは互いに素であり、 I ≠ jは AJ≠愛。
- 全ての極大値 I AIが最小化されるべきである(すなわち、可能な限り小さいです)。
整数のペアが呼び出された 互いに素 その場合 最大公約数が ある 1 1。
アイデア:
ふるい法、指数は素数である新たな価値を与え、その後、同じ値の彼の倍数を与えています。
コード:
#include <ビット/ STDC ++ H> 名前空間STDを使用して、 typedefの長い長いLL。 const int型MAXN = 3E5 + 10。 const int型MOD = 1E9 + 7。 N INT、M、K、T。 [MAXN] int型。 メインINT() { CIN >> N。 int型CNT = 0、POS = 0; 以下のために(INT I = 2; iが<= N; iは++) { IF([I] = 0!) 続けます。 // coutの<< I <<てendl; [I] = ++ POS。 CNT ++; int型J = 2 * I。 一方、(j <= N) { [J] = POS。 J + = I; CNT ++; } //もし(CNT> = N-1) //ブレーク; } 以下のために(INT I = 2; iが<= N; iは++) COUT << [I] << ''。 coutの<<てendl; 0を返します。 }