【51Nod1421】最大MOD值
来源:互联网 发布:油画 知乎 编辑:程序博客网 时间:2024/06/01 09:00
有一个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
题解
类似于筛法,对于一个数x,我们要在x*i ~ x*(i+1) 这段区间中找最大值。
去重后,用二分。
代码
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<set>#include<ctime>#include<vector>#include<cmath>#include<algorithm>#include<map>#include<queue>#define mod 20101009#define ll long long #define N 10000005 using namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}int n,a[200005],mx;int main(){ n=read(); for (int i=0;i<n;i++) a[i]=read(); sort(a,a+n); n=unique(a,a+n)-a; for (int i=0;i<n;i++) { for (int j=a[i]<<1;j<=a[n-1];j+=a[i]) { int p=lower_bound(a,a+n,j)-a; if (p) mx=max(mx,a[p-1]%a[i]); } mx=max(mx,a[n-1]%a[i]); } printf("%d",mx); return 0;}
阅读全文
0 0
- 【51Nod1421】最大MOD值
- 51nod 1421:最大MOD值
- [51nod 1421]最大MOD值
- 51nod-1421 最大MOD值
- 51nod 1421 最大MOD值
- 51Nod-1421-最大MOD值
- 【数学】51Nod 1421 最大MOD值
- 51nod 1421 最大MOD值 (暴力枚举)
- 51 nod 1421 最大mod值 思维题
- [乱搞]51 Nod 1421——最大MOD值
- 51nod 1421 最大mod值 (排序+二分搜索)
- 51NOD 1421 最大MOD值&&Codeforces 484 B. Maximum Value(筛法 + 二分)
- 51nod 1421 最大MOD值 & codeforces 485D Maximum Value(思维 数学)
- MOD
- mod..........
- Mod
- Mod
- mod
- mkdocs安装
- 我用Python爬了12万条影评,告诉你《战狼Ⅱ》都在说些啥
- 代码整洁_类
- 求最小公倍数 Java模板
- 问题小结
- 【51Nod1421】最大MOD值
- Kotlin基础语法
- 移动端css重置
- 基于Android 7.1的AsyncTask原理分析
- 【001】计算机语言概述_Java
- hdu 6191 可持久化trie||线段树套trie||trie启发式合并
- centos6.5下面安装Mysql笔记
- 将输入框的内容追加到表格中
- 移动端边框1px处理