Description
对任意的四个不同的正整数组成的集合A={a_1,a_2,a_3,a_4 },记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_A为最大值的集合组数。
Input
输入一行 2 个整数 l 和 r,意义如上所述。
0≤l,r≤10^18
Output
输出 2 行,每行一个整数,分别表示 2 问的答案。
Sample Input
1 30
Sample Output
4 3 【样例解释】 n_A最大只能达到 4,没有n_A超过 4 的 4 个数 在[1, 30]中,满足n_A为 4 的 4 个数共有 3 组: 1. 1 5 7 11 2. 2 10 14 22 3. 1 11 19 29
HINT
Source
题解
这道题是IMO的原题—
1 #include2 #define ll long long 3 using namespace std; 4 ll l,r; 5 int main(){ 6 scanf("%lld%lld",&l,&r); 7 puts("4"); 8 printf("%lld\n",max(r/11ll-l+1,0ll)+max(r/29ll-l+1,0ll)); 9 return 0;10 }