傳送門:
【題解】
出自第52屆imo試題第1題。
首先第一問一定是4(樣例給你了啊),如果要你證明,
我們不妨令a123
4那麼有s=a1+a2+a3+a4
s/2=a1/2+a2/2+a3/2+a4/2
那麼有a3/2+a4/2+a3/2+a4/2>a1/2+a2/2+a3/2+a4/2>s/2,即a3+a4>s/2,顯然這不可能是s的因數。
同理,a4/2+a2/2+a2/2+a4/2>a1/2+a2/2+a3/2+a4/2>s/2,即a2+a4>s/2,顯然也不可能是s的因數。
所以在所有6種組合裡,最多有4種數對滿足條件。
討論當na=4的情況:
a1+a4和a2+a3一定有乙個大於等於s/2
討論a2-a1和a4-a3的大小即可.
也就是說
s/2<=max(a1+a4,a2+a3)
那麼要滿足a1+a4是s的約數,a2+a3是s的約數,就要滿足
a1+a4=a2+a3=s/2
令u=a1+a2,v=a1+a3(u那麼s=2(a2+a3)=2(u+v-2a1)
所以v|s,即v|2(u+v-2a1),即v|2(u-2a1)
那麼令k=(2u-4a1)/v,k為整數且k>=1
那麼k=2(u/v)-4(a1/v)<2
又k>0,且k為整數且k>=1,故k=1
故2(u-2a1)=v
另一邊,有u|2(v-2a1)
那麼就有u|2(2(u-2a1)-2a1)
u|2(2u-6a1)
u|4u-12a1
那麼u|12a1
由於u1
所以u>4a1
所以u=6a1或u=12a1
所以集合只有兩種,為s=或s=
暴力做即可
# include # includeview code# include
# include
//# include
using
namespace
std;
typedef
long
long
ll;typedef
long
double
ld;typedef unsigned
long
long
ull;
const
int m = 5e5 + 10
;const
int mod = 1e9+7
;# define rg register
# define st
static
ll l, r;
intmain()
BZOJ 4915 簡單的數字題(數學)
description 對任意的四個不同的正整數組成的集合a 記s a a 1 a 2 a 3 a 4,設n a是滿足a i a j 1 i j 4 s a的數對 i,j 的個數,現在有兩問第一問 求對於所有由4個不同正整數的集合a,n a的最大值是多少第二問 我們將給出l,r,求區間l到r內滿足n...
簡單基礎數字 dp 題
終於比較理解了數字 dp qwq 處理大數區間的計數,分成每一位考慮,f 考慮從高到低位在第 pos 位並且滿足某些條件的答案,這個東西我們可以記憶化搜尋,但是注意要設計好狀態,不然會漏或者重複計算某些情況 qwq 需要觀察題目有沒有前導 0 限制,不過這個也不是重點了。關鍵在於對狀態的設計。zjo...
BZOJ2683 簡單題 題解
1.若n比較小,則可以用二維的樹狀陣列或線段樹來做,但是500000,空間開不下,於是考慮離線cdq。子矩陣的數字和表示為也就是二維字首和,因此乙個要查詢的子矩陣,對其有影響的矩陣為s x2 y2 s x2 y1 1 s x1 1 y2 s x1 1 y1 1 這四個字首子矩陣 所以,在沒有修改操作...