POJ 2769 Reduced ID Numbers 数学+暴力
2017-05-08 11:41
302 查看
河南省第十届省赛C题
题意是给你n个数,你需要找到一个数x,使得这n个数对x的余数都不一样
假设a和b对x同余,那么就是(a-b)%x=0
那么意味着,我们需要知道所有数的差值,我们的x不能是其中的约数
所有数的差值直接二维暴力处理,因为数据很小,可以开个一维数组判断某个值是否存在于差值中
我们要求最小的x,那么从1开始往上枚举,类似素数筛法,复杂度是mlog(m),m是枚举的最大可能值,在这里是1e6的级别,所以不会超时
判断条件是:x的所有倍数都不在差值里就是我们需要的值
//#include<bits/stdc++.h>
#include<stdio.h>
#include<string.h>
using namespace std;
const int maxn=400;
const int maxm=1e6+50;
int T,n;
int a[maxn];
int has[maxm];
bool ok(int x){
for(int i=x;i<1e6;i+=x)
if (has[i]) return false;
return true;
}
int main(){
scanf("%d",&T);
while(T--){
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
memset(has,0,sizeof(has));
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
if (a[i]>a[j])
has[a[i]-a[j]]=1;
else
has[a[j]-a[i]]=1;
for(int ans=1;;ans++)
if (ok(ans)){
printf("%d\n",ans);
break;
}
}
return 0;
}
题意是给你n个数,你需要找到一个数x,使得这n个数对x的余数都不一样
假设a和b对x同余,那么就是(a-b)%x=0
那么意味着,我们需要知道所有数的差值,我们的x不能是其中的约数
所有数的差值直接二维暴力处理,因为数据很小,可以开个一维数组判断某个值是否存在于差值中
我们要求最小的x,那么从1开始往上枚举,类似素数筛法,复杂度是mlog(m),m是枚举的最大可能值,在这里是1e6的级别,所以不会超时
判断条件是:x的所有倍数都不在差值里就是我们需要的值
//#include<bits/stdc++.h>
#include<stdio.h>
#include<string.h>
using namespace std;
const int maxn=400;
const int maxm=1e6+50;
int T,n;
int a[maxn];
int has[maxm];
bool ok(int x){
for(int i=x;i<1e6;i+=x)
if (has[i]) return false;
return true;
}
int main(){
scanf("%d",&T);
while(T--){
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
memset(has,0,sizeof(has));
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
if (a[i]>a[j])
has[a[i]-a[j]]=1;
else
has[a[j]-a[i]]=1;
for(int ans=1;;ans++)
if (ok(ans)){
printf("%d\n",ans);
break;
}
}
return 0;
}
相关文章推荐
- poj 2769 Reduced ID Numbers(暴力)
- POJ 2769 Reduced ID Numbers 同余定理(暴力)
- poj 2769 Reduced ID Numbers(memset使用技巧)
- POJ 2769 Reduced ID Numbers
- POJ 2769 Reduced ID Numbers (同余定理)
- poj 2769 Reduced ID Numbers
- POJ 2769 Reduced ID Numbers 解题报告
- poj-2769-Reduced ID Numbers
- poj 2769——Reduced ID Numbers
- POJ 2769 Reduced ID Numbers
- POJ Reduced ID Numbers 同余 暴力
- Poj 2769 Reduced ID Numbers
- poj 2769 Reduced ID Numbers(memset使用技巧)
- POJ2769 Reduced ID Numbers[同余]
- POJ 2769 Reduced ID Numbers
- 同余定理:poj2769 Reduced ID Numbers(标记数组)+hdu1021 Fibonacci Again(应用于递推公式)
- POJ 2769 Reduced ID Numbers
- POJ 2769 Reduced ID Numbers
- POJ2769 Reduced ID Numbers
- poj 2769 Reduced ID Numbers