计蒜客-T1271 完美K倍子数组

2021-02-19 18:20

阅读:625

标签:string   科学   alt   需要   signed   fine   queue   cst   false   

 

完美K倍子数组

技术图片

 

错误原因:

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

思路:

  1.k的倍数类

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

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

#include 
#include
#include 
#include 
#include 
#include 
#include
#includeset>
#include#define endl ‘\n‘
#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;
mapint,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;ii){
        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) cout1endl;
    else if(ans!=0) coutendl;
    else cout2endl;
}

 

  

 

 

 

计蒜客-T1271 完美K倍子数组

标签:string   科学   alt   需要   signed   fine   queue   cst   false   

原文地址:https://www.cnblogs.com/waryan/p/12684522.html


评论


亲,登录后才可以留言!