BZOJ-4915-简单的数字题
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
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 #include<bits/stdc++.h> 2 #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 }