bzoj4915 簡單的數字題
傳送門:http://www.lydsy.com/JudgeOnline/problem.php?id=4915
【題解】
出自第52屆IMO試題第1題。
首先第一問一定是4,如果要你證明,我們可以設四個數為a1,a2,a3,a4
不妨令a1<a2<a3<a4
那麽有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的因數。
同理,a2/2+a4/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<v)
那麽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
由於u<v=2u-4a1
所以u>4a1
所以u=6a1或u=12a1
所以集合只有兩種,為S={a1,5a1,7a1,11a1}或S={a1,11a1,19a1,29a1}
暴力做即可
# include <stdio.h> # include <string.h> # include <iostream> # include <algorithm> // # include <bits/stdc++.h>View Codeusing 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; int main() { cin >> l >> r; cout << 4 << endl; ll ans = max(r/11-l+1, 0ll) + max(r/29-l+1, 0ll); cout << ans << endl; return 0; }
bzoj4915 簡單的數字題