51nod 1421 最大MOD值(思维)
2018-02-16 23:29
411 查看
Description
有一个a数组,里面有n个整数。现在要从中找到两个数字(可以是同一个) ai,aj ,使得 ai mod aj 最大并且 ai ≥ aj。Input
单组测试数据。第一行包含一个整数n,表示数组a的大小。(1 ≤ n ≤ 2*10^5)
第二行有n个用空格分开的整数ai (1 ≤ ai ≤ 10^6)。
Output
输出一个整数代表最大的mod值。Input示例
3 3 4 5
Output示例
2
解题思路
在求ai%aj的最大值时,只需要求(ai,ai*2)之间的最大值%aj,(ai*2,ai*3)之间的最大值%aj……. 所以一开始对数组排序,然后依次挑选出来每一段中的最大值%j 就可以把时间节省下来啦.代码实现
#include <bits/stdc++.h> #define IO ios::sync_with_stdio(false);\ cin.tie(0);\ cout.tie(0); using namespace std; typedef long long ll; #define maxn 200007 int a[maxn]; int main() { IO; int n; cin>>n; memset(a,0,sizeof(a)); for(int i=1; i<=n; i++) cin>>a[i]; sort(a,a+n+1); int ans=0; for(int i=1;i<=n;i++) { int j=a[i]*2; while(j<=a ) { int t=lower_bound(a,a+n,j)-a; if(t>0) ans=max(ans,a[t-1]%a[i]); j+=a[i]; } ans=max(ans,a %a[i]); } cout<<ans<<endl; return 0; }
相关文章推荐
- 51nod 1421:最大MOD值
- 51nod 1421:最大MOD值
- 51nod 1421 最大MOD值
- 51nod-1421 最大MOD值
- 51nod 1421 最大MOD值 (暴力枚举)
- 51nod 1421 最大MOD值 & codeforces 485D Maximum Value(思维 数学)
- 51Nod-1421-最大MOD值
- 51nod 1421 最大mod值 (排序+二分搜索)
- [51nod 1421]最大MOD值
- 51 nod 1421 最大MOD值
- 51nod 1272 最大距离 思维题
- 51nod 1402 最大值 【-.-思维??--】
- 51NOD 1421 最大MOD值&&Codeforces 484 B. Maximum Value(筛法 + 二分)
- [乱搞]51 Nod 1421——最大MOD值
- 51nod 1272 最大距离(思维)
- 51nod 1421 最大MOD值 | 暴力
- 51nod 1272 最大距离【思维】
- 51nod 1563 坐标轴上的最大团(今日gg模拟第一题) | 线段覆盖 贪心 思维题
- 1421 最大MOD值
- 51 nod 1421 最大mod值 思维题