SDNU 1464最大の最小公倍数(思考)

説明

任意の1 N次期3つの数字、その最小公倍数から正の整数N、Q〜与えられた問題の説明は非常にまで可能。

入力

正の整数N入力(1 <= N <= 10 ^ 6)

出力

出力あなたがの最小公倍数を見つける表す整数

サンプル入力

9

サンプル出力

504の
アイデア:インターネットは、O(nは^ 3)での問題は、Tは、偽であるだろうと述べました!私のアプローチはまた、Tである(nはログ)O!非人道的な。その後、この方法は、数学を使用することができます。
nが= N *(N-1、奇数の(最大最小公倍数)である場合 )*(N-2)
*(N-1)= nが偶数である場合に、nが3の倍数である場合、(複数の最大最小共通) (N-2)*(N -3)
又は(最大公約数)= N *(N-1 )*(N-3)
書式#include <cstdioを> 
する#include <iostreamの> 
の#include <cmath> 
の#include < 文字列 > 
の#include <CStringの> 
の#include <アルゴリズム> 
書式#include <キュー> 
の#include <ベクトル> 
の#include <マップ>
 使用して 名前空間はstd;
#defineっ長い長い
 のconst  int型 INF = 0x3f3f3f3f const  int型 MOD = 1E9 + 7 

LL nは、合計。

INT メイン()
{ 
    scanf関数(" %のLLD "N);
    もし(N <= 2)のprintf(" %LLDする\ n " 、N)。
    そう であれば(N%2!= 0 
    {  = N×(N- 1)*(N- 2 ); 
        printf(" %LLDの\ nを" 、合計)。
    } 
    そう であれば(N%3 == 0 
    { 
        合計 =(N- 1)*(N- 2)*(N- 3 )。
        printf(" %LLDの\ nを"、合計)。
    } 
    
    {  = N *(N- 1)*(N- 3 )。
        printf(" %LLDの\ nを" 、合計)。
    } 
    戻り 0 
}

 

おすすめ

転載: www.cnblogs.com/RootVount/p/11250412.html