zoukankan      html  css  js  c++  java
  • 计蒜客-T1271 完美K倍子数组

    完美K倍子数组

    错误原因:

      当一个数过大时存map时需要考虑的时候将其取余然后在输入的时候就遍历掉,单独遍历map是不科学的

    思路:

      1.k的倍数类

      2.非k的倍数但是两个数加起来是k的倍数比如2k+3和3k+(k-3)

      3.对k取余后是k的一半

    #include <iostream>
    #include<algorithm>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <queue>
    #include<map>
    #include<set>
    #include<sstream>
    #define endl '
    '
    #define INF 0x3f3f3f3f
    #define DOF 0x7f7f7f7f
    #define mem(a,b) memset(a,b,sizeof(a));
    #define IO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    typedef long long ll;
    using namespace std;
    const int maxn=1e5+10;
    map<unsigned int,unsigned int>mt;
    int main()
    {
        unsigned int n,k,tmp;cin>>n>>k;
        unsigned cnt1=0,cnt2=0,flag=0;
        for(unsigned int i=0;i<n;++i){
            cin>>tmp;
            int t=tmp%k;
            if(t==0) ++cnt1;
            else if(2*t%k==0) ++cnt2;
            else if(!flag){
                mt[t]=1;
                if(mt[k-t]) flag=1;
            }
        }
        unsigned int ans=0;
        if(cnt1==1) cnt1=0;
        if(cnt2==1) cnt2=0;
        ans=max(cnt1,cnt2);
        if(ans==0&&!flag) cout<<-1<<endl;
        else if(ans!=0) cout<<ans<<endl;
        else cout<<2<<endl;
    }

      

  • 相关阅读:
    Deepin Linux下安装安卓应用的各种方式
    win下的终端使用指南
    IDEA自定义TODO
    WSL的ssh-agent问题
    MySQL数据类型
    MySQL常用命令.md
    Period 时间坑
    exp/imp管理
    expdp和impdp管理(逻辑导入导出)
    同义词
  • 原文地址:https://www.cnblogs.com/waryan/p/12684522.html
Copyright © 2011-2022 走看看