アヴィンは、今日の豊かな顧客を満たしています。彼はハードの問題を解決することができれば、彼は100万ドルを獲得します。n個の倉庫やメートルの労働者があります。i番目の倉庫内のすべての労働者は一日あたりのAI注文を処理することができます。顧客は、すべての倉庫毎日注文の同じ数を処理する満たす1つのワーカー割り当て方法が存在するかどうかを疑問に思います。各ワーカーは正確に一つの倉庫に割り当てる必要があることに注意して作業するときに何の労働者は怠け者ではありません。
入力
最初の行は二つの整数N(1≤N≤1、000)、M(1018≤1≤M)を含みます。2行目は、n個の整数を含みます。i番目の整数AI(1≤AI≤10)は、i番目の倉庫内の1つのワーカーは、1日あたりのAI注文を処理することができ表します。
出力
実現可能な割り当て方法がある場合は、最初の行に「はい」印刷します。次に、i番目の倉庫に割り当てられた従業員の数を表すi番目の整数と2行目の印刷nは整数です。
それ以外の場合は、1行目に「いいえ」印刷します。複数の解決策がある場合は、いずれかの解決策が受け入れられています。
サンプル入力
2 6 1 2 2 5 1 2
サンプル出力
はい 4 2 ノー
質問の意味を:N倉庫、m個の労働者、学校単一速度、Qが存在し、それぞれの倉庫には、各倉庫同じ量を一日各ワーカーのための合理的な配分を、送信することができるように。出力割当て方式場合
ソリューション:N pの最小公倍数は、m%のN == 0は、合理的な配分場合、単一速度を送信するように決定されます
書式#include <iostreamの> の#include <アルゴリズム> 書式#include < 文字列の.h> の#include < 文字列 > の#defineは長い長いでしょ 使用して 名前空間はstdを、 LL N、M。 LLのP [ 1005 ]。 LLのGCD(LLのB、LL)// 最大公约数 { 戻り Bの== 0?A:GCD(B、%のB)。 } (LLのB LL)LLのLCM // 最小公倍数 { 返す *(B)/ GCDをB。 } int型のmain() { 一方(CIN >> N >>M) { ため(LL I = 1 iが<= N; iが++ ) CIN >> P [i]は、 LLのTEMP = P [ 1 ]。 用(LL I = 2 ; iが<= N; iが++ ) { TEMP = LCM(TEMP、P [I])。 } LLのCNT = 0、フラグ= 0 、D。 用(LL i = 1 ; iが<= N; iが++ ) CNT = CNT + TEMP / P [i]は、 もしメートルの%のCNT(!= 0) フラグ = 1 。 そうでなければ D = M / CNT。 もし(フラグ== 0 ) { COUT << " はい" << ENDL。 用(LL i = 1 ; iが<= N; iが++ ) { 場合(!I = N) COUT << TEMP / P [I] * D << ' ' 。 他の coutの << TEMP / P [i]は* D << てendl; } } 他の 裁判所未満 << " ノー" << てendl; } 戻り 0 。 }