説明
任意の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 。 }