zoukankan      html  css  js  c++  java
  • Codeforces Round #680 (Div. 2, based on Moscow Team Olympiad)(A->C(质因子分解))

    地址:http://codeforces.com/contest/1445/problem/A

    解析:

    既然a[]是递增,那么b[]递减即可。遍历一遍即可。

    #include<iostream>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    #include<map>
    typedef long long ll;
    const int maxn=1e4;
    int a[maxn],b[maxn];
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            int n,x;
            cin>>n>>x;
            for(int i=1;i<=n;i++)
                cin>>a[i];
            for(int i=1;i<=n;i++)
                cin>>b[i];
            sort(b+1,b+1+n);
            int ok=0;
            for(int i=1;i<=n;i++)
            {
                if(a[i]+b[n-i+1]>x)
                {
                    ok=1;break;
                }
            }
            if(ok)
                cout<<"No"<<endl;
            else
                cout<<"Yes"<<endl;
        }
    }

    B:http://codeforces.com/contest/1445/problem/B

    解析:

    没读懂哎,然后我就猜了一波样例,就这么过了。。。。max(a+b,c+d)

    #include<iostream>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    #include<map>
    typedef long long ll;
    const int maxn=1e4;
    int a[maxn],b[maxn];
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            int a,b,c,d;
            cin>>a>>b>>c>>d;
            cout<<max(a+b,c+d)<<endl;
        }
    }

    C:http://codeforces.com/contest/1445/problem/C

    题意:

    给出p<=1e18,q<=1e9

    求出一个最大x,使得p%x==0,x%q!=0

    解析:

    1:p<q

    直接输出p

    2:p>=q

    当p%q!=0时,直接输出p即可

    所以现在需要讨论的就是p%q==0的时候

    既然p%q==0,那么对它俩分解质因子,q的质因子一定包含在p的质因子里面。

    对于x,p%x==0,那么求x,一定要p不断地除自身的质因子才行。

    怎么避免x%q==0呢?对于p,q的同一个质因子k来讲,如果p那边的幂次大于q,那么p除k可能不仅仅是一步,可能除好几次才能保证p%q!=0。所以要不断地除,直到p%q!=0才行。

    也就是说,每次p要不停除q的某一个质因子,直到此质因子在p的次幂<q的,这个时候一定满足p%q!=0,因为这个时候p的质因子集合就不完全包含q的了。每次取个最大值即可。

    #include<cstdio>
    #include<cstring>
    #include<vector>
    #include<algorithm>
    #include<iostream>
    #include<vector>
    using namespace std;
    const int maxn=1e5+10,maxn2=31*maxn;
    int idx=0;
    typedef long long ll;
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            ll p,q;
            cin>>p>>q;
            ll qq=q;
            vector<ll>v;
            for(int i=2;i<=q/i;i++)
            {
                while(q%i==0)
                {
                    q=q/i;
                    v.push_back(i);
                }
            }
            if(q>1)
                v.push_back(q);
            ll maxx=0;
            for(int i=0;i<v.size();i++)
            {
                ll md=p;
                while(md%qq==0)
                {
                    md=md/v[i];
                }
                maxx=max(maxx,md);
            }
            cout<<maxx<<endl;
        }
    }
  • 相关阅读:
    Go标准库Context
    事务并发处理: DB+ORM+逻辑代码
    日志:slf4j+log4j+maven配置
    Shiro workshop
    JSP Workshop
    sql records
    Java内存模型(JMM)
    Application, JDBC, 数据库连接池, Session, 数据库的关系
    Java位操作全面总结
    Effective Java总结
  • 原文地址:https://www.cnblogs.com/liyexin/p/13916499.html
Copyright © 2011-2022 走看看