栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 2657 Comfort

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 2657 Comfort

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;inline int gcd(int a,int b){    if(b==0)        return a;    else        return gcd(b,a%b);}inline int extgcd(int a,int b,int &x,int &y){    if (b==0)    {        x=1,y=0;        return a;    }    int d, tp;    d=extgcd (b, a%b, x, y);    tp=x;    x=y;    y=tp - a/b*y;    return d;}inline int getx(int a, int b, int n) // ! n > 0{    int e, i, d, x, y;    d = extgcd(a, n, x, y);    if (b%d>0) return -1;    else    {        e=(x*(b/d))%n;        int ans=e,t=n/d,num=(n-e)/t;        for(i=-1;i<=1;i++) e=(e+(num+i)*t+n)%n,ans=min(ans,e);        return ans;    }}int s1[1005],s2[1005],top1,top2;int main(){    int n,z,m;    while(scanf("%d%d%d",&n,&z,&m)!=EOF)    {        int i,k,v;        top1=top2=0;        for(int i=0; i<m; i++)        { scanf("%d",&v); if(v<z)     s1[top1++]=v; else     s2[top2++]=v;        }        if(top1==0)        { printf("1n"); continue;        }        for(k=2; k<z; k++)        { int b,d=gcd(k,z-1); if(d==k) {     for(i=0; i<top1; i++)         if((s1[i]-1)%k==0)  break;     if(i<top1)         continue;     printf("%dn",k);     break; } m=getx(n,k-(z-1)%k,k); if(m==-1)     continue; for(i=0; i<top1; i++)     if((s1[i]-1)%k==0||((v=getx(n,k-(s1[i]-1)%k,k))!=-1&&v<=m))         break; if(i<top1)     continue; for(i=0; i<top2; i++)     if((s2[i]-1)%k==0||((v=getx(n,k-(s2[i]-1)%k,k))!=-1&&v<m))         break; if(i<top2)     continue; printf("%dn",k); break;        }    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377165.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号