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

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 } 
View Code

 

posted @ 2017-10-14 13:45  I__am  阅读(160)  评论(0编辑  收藏  举报