超級碼力線上程式設計大賽初賽 第3場 1.最大公倍數
阿新 • • 發佈:2020-09-18
https://tianchi.aliyun.com/oj/15179470890799741/85251759933690467
若a與b(a<b)的最大公因數為c,那麼b-a>=c
如果b是奇數,那麼答案就是b*(b-1)*(b-2)
因為相鄰的3個數只能有公因數2,而b是奇數所以不會有兩個偶數
如果b是偶數,若b不是3的倍數,那麼答案就是b*(b-1)*(b-3)
因為如果選b (b-1) (b-2) ,最大是b*(b-1)*(b-2)/2,當b>=4時,b-3>=(b-2)/2
如果b是偶數,且b是3的倍數,那麼答案就是(b-1)*(b-2)*(b-3)
因為如果選了b,同上。
注意當b-a=2時,若b是偶數,只能是b*(b-1)*(b-2)/2
(數學渣渣只會這樣理解,如有錯誤感謝指出,嚶嚶嚶)
class Solution { public: /** * @param a: Left margin * @param b: Right margin * @return: return the greatest common multiple */ long long greatestcommonmultiple(int a, int b) { // write your code here if(b&1)) return 1ll*b*(b-1)*(b-2); else if(b-a==2) return b*(b-1)*(b-2)/2; else if(b%3) return 1ll*b*(b-1)*(b-3); else return 1ll*(b-1)*(b-2)*(b-3); } };