問題への羅区p1458ソリューション

申し訳ありませんが、あなたコンニャク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 == 0X: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 == 0X: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 ; 
}

見てくれてありがとう~~~

おすすめ

転載: www.cnblogs.com/yanxiujie/p/11145132.html