1. 程式人生 > >Codeforces 236C LCM Challenge 數論(基礎題)

Codeforces 236C LCM Challenge 數論(基礎題)

題意:找到三個數<=n (n<=1e6)&&使LCM(a,b,c)儘量大

LCM=(a*b*c)/(d1*d2)  d1為gcd(a,b) d2為gcd(ab/d1,c) 

n<3特判

n>3:分以下兩種情況

若n為奇數: n-1為偶數與n,n-1都互質&&gcd(n,n-2)=1(n為奇數) 設d|n&&d|n-2 則d|2 d<=2 由n為奇數得 d=1

所以三個數兩兩互質 直接相乘就能得到最大的LCM

若n為偶數 可得一個LCM k1=(n-1)(n-2)(n-3)  可能比k1大的只有當n%3!=0 -> gcd(n,n-3)=1 LCM(n,n-1,n-3)=n*(n-1)*(n-3)>k1

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+20;
ll n,ans;
ll gcd(ll a,ll b)
{
	return a%b==0? b:gcd(b,a%b);
}
int main()
{

	while(cin>>n)
	{
		if(n>=3)
		{
			if(n%2)
			cout<<n*(n-1)*(n-2)<<endl;//奇數開頭三個數互質
			else
			{
				ll k1=(n-1)*(n-2)*(n-3);
				//顯然n%2==0&&n>3,LCM(n,n-1,n-2)<k1
				//當n%2==0&&n%3!=0 -> gcd(n,n-3)=1 LCM(n,n-1,n-3)=n*(n-1)*(n-3)>k1
				ll k2=0;
				if(n%3)
				{
					k2=n*(n-1)*(n-3);	
				}
				cout<<max(k1,k2)<<endl;
			}
		
		}
		else
		{
			if(n==1)
			cout<<1<<endl;
			else if(n==2)
			cout<<2<<endl; 
		}
	}
	return 0;
}


相關推薦

Codeforces 236C LCM Challenge 數論(基礎)

題意:找到三個數<=n (n<=1e6)&&使LCM(a,b,c)儘量大 LCM=(a*b*c)/(d1*d2)  d1為gcd(a,b) d2為gcd(ab/d1,c)

Codeforces 515C 題解(貪心+數論)(思維)

題面 Drazil is playing a math game with Varda. Let’s define f(x)f(x)for positive integer x as a product of factorials of its digi

數論思維】Enlarge GCD【Codeforces Round #511 (Div. 2)】

題意:       給你 n 個數,分別為 a1、a2、...、ai、... an,現在從這n個數中刪去p個數,使剩下的數的gcd變大。求最小的p。 思路:       一開始的思路是想用貪心做,先求出所有數字的gcd,然後將數字排序,再依次求gcd,如果與當前這個

Educational Codeforces Round 23 A-F 補

als nal 枚舉 typedef code col sca 復雜 long long A Treasure Hunt 註意負數和0的特殊處理。。 水題。。 然而又被Hack了 嗎的智障 #include<bits/stdc++.h> using names

Java基礎

更新 -a ext 大神 準備 bsp detail 其他 java Java面試題 最近一直在準備各種考試,好長時間沒更新筆記了,這兩天在復習數據結構的一些知識,但也沒忘了關註Java的相關知識。從網上找了其他大神的相關面試題,大家可以看一下,希望對大家有

Codeforces Round #419 (Div. 1) 補 CF 815 A-E

pac 三元組 題意 pan codeforce names bre d+ cmp A-C傳送門 D Karen and Cards 技巧性很強的一道二分優化題 題意很簡單 給定n個三元組,和三個維度的上限,問存在多少三元組,使得對於給定的n個三元組中的每一個,必有兩個維度

POJ 2251 三維BFS(基礎

art cube find bsp ssi cal input nal sample Dungeon Master Description You are trapped in a 3D dungeon and need to find the quickest way o

ZOJ - 3890 Wumpus(BFS基礎

bject when urn include math ase 找到 algo step Wumpus Time Limit: 2 Seconds Memory Limit: 65536 KB One day Leon finds a

002 生信基礎

it is cti ble 數列 ini mes tcc pen true 01 ‘GATCCAGATCCCCATAC‘, 計算這串數列中兩個出現最高的頻率。 t = ‘GATCCAGATCCCCATAC‘ L = [ ] for i in range(le

二分圖的一大潑基礎

sbo colors 關鍵點 tel 最短 lin nes bit oot 【HDU】//1068 Girls and Boys 最大匹配★//1150 Machine Schedule 最小點覆蓋★1151 Air Raid 最小路徑覆蓋★//1179 Ollivande

數論基礎

p s chl 方程 實現 題意 標記 tro ext -a Dirichlet理論   題意   給定 $a, b, L, U$ , 求 $an + b$ 中有多少個素數.   $a > 0, b \ge 0, U \ge L \ge 0$ .   $an + b

POJ 2398 - Toy Storage - [計算幾何基礎][同POJ2318]

fin 邊界 vector nta 鏈接 ++ 輸出 mine puts 題目鏈接:http://poj.org/problem?id=2398 Time Limit: 1000MS Memory Limit: 65536K Description Mom and dad

POJ 2186 受歡迎的牛 Tarjan基礎

algo name r+ int add for stack div elong 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #include&l

Codeforces 901C. Bipartite Segments(思維

lose struct ostream part pan -i lap read har   擦。。沒看見簡單環。。已經想的七七八八了,就差一步   顯然我們只要知道一個點最遠可以向後擴展到第幾個點是二分圖,我們就可以很容易地回答每一個詢問了,但是怎麽求出這個呢。   

CodeForces 5C(DP初步_G)解題報告

pty cst ret force display ace ont pop 是否 題目鏈接:http://codeforces.com/problemset/problem/5/C ----------------------------------------------

CodeForces 607B(DP初步_H)解題報告

思路 algorithm 次數 spa cstring spl 移除 狀態轉移方程 color 題目鏈接:http://codeforces.com/problemset/problem/607/B -------------------------------------

HDU 1285 確定比賽名次(拓撲排序基礎

個數 排名 有向無環圖 沒有 left php 輸出 編號 整數 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1285 題目: 有N個比賽隊(1<=N<=500),編號依次為1,2,3,。。。。,N進行比賽,

POJ 2367 Genealogical tree (拓撲排序基礎

acc actually ref ron ear scrip ssi sam tel 題目鏈接:http://poj.org/problem?id=2367 題目: Description The system of Martians‘ blood relations

SPOJ DQUERY D-query(莫隊基礎

com nts numbers problem algorithm problems rep div void 題目鏈接:http://www.spoj.com/problems/DQUERY/ 題目: Given a sequence of n numbers a1,