申し訳ありませんが、あなたコンニャクyanxiujieがリンクqwqを挿入方法を知らない人qwqのテキストを貼り付けなければならなかった:https://www.luogu.org/problemnew/show/P1458
質問はちょうどあなたの小さなこんにゃくをqwqのではい、それは、とても難しい黄色の質問です
[OK]を、来ます
この質問は、タイトルを読んだ後、イタリアは理解することは比較的容易でなければならないこと。
タイトルの意味は番号が付与され、
あなたはすべての画分に以下で、この範囲内の分母とスコアの全体数を見つけ、また、出力が注文を持っているときに注意を払うようにします。
その後、我々は、列挙を直接決定し、記録することができます。
まず、我々はすべてを見つけるのスコアを見つけることができる2つを列挙するために、forループの後に直接入力してください
用(int型私は= 0 ; I <= N-Iは++ ) のために(INT J = 1。 ; J <= N; J ++ ) IF(Iは<= J){ // 拝啓、決意条件であれば分子として、あります我々は彼を選出することができ、大きな分母スコア int型 ROM = GCD(I、J); 場合(ROMの== 1){ // 実際には、二つが一緒にマージすることができた場合にのみ秒残している ++ヘッドを、 NUM 【ヘッド】.X = I; NUM [ヘッド] .Y = J; NUM【ヘッド】.mal = I *が1.0/ J * 1.0 ; } そう であれば(!ROM = 1 ){ ヘッド ++ 。 NUM【ヘッド】.X = I / ROM。 NUM【ヘッド】.Y = J / ROM。 NUM【ヘッド】.mal =(I / ROM * 1.0)/(J / ROM * 1.0 )。 } }
最大公約数GCDを決定する機能
INT GCD(int型のx、int型のY){ リターンのy == 0?X:GCD(Y、Xの%のY)。 }
サイズ分画に従ってソート
int型CMP(ゼロのx、yはゼロ){ 戻り x.mal < y.mal。 }
最後に、クリーンなACコード(個人的な好み)
書式#include <iostreamの> の#include <cstdioを> する#include <アルゴリズム> 使用して 名前空間はstdを、 int型nは、ヘッドと、 構造体ゼロ{ int型X、Y。 ダブルMAL; } NUM [ 100000 ]。 INT GCD(int型のx、int型のY){ リターンのy == 0?X:GCD(Y、Xの%のY)。 } int型CMP(ゼロのx、ゼロY){ 戻り x.mal < y.mal。 } int型のmain(){ scanf関数(" %dの"、&N) 以下のために(int型 i = 0 ; iは= N <I ++ ) のための(INT J = 1 ; J <= N; J ++ ) 場合(iは= < j)を{ INT ROM = GCD(i、j)は、 もし(ROMの== 1 ){ ヘッド ++ 。 NUM【ヘッド】.X = I。 NUM【ヘッド】.Y = J。 NUM [ヘッド] .mal =私は* 1.0 / J * 1.0 ; } そう であれば(!ROM = 1 ){ ヘッド ++ 。 NUM【ヘッド】.X = I / ROM。 NUM【ヘッド】.Y = J / ROM。 NUM【ヘッド】.mal =(I / ROM * 1.0)/(J / ROM * 1.0 )。 } } ソート(NUM + 1、NUM + 1つの + ヘッド、CMP)。 以下のための(int型私は= 1 ;;私は=の頭を<I ++は) 場合(!NUM [I] .mala = NUM [I + 1 ] .mala) のprintf(" %D /%D \ n " 、[I]・X [i]は.Yかどうか)。 リターン 0 ; }
見てくれてありがとう~~~