zoukankan      html  css  js  c++  java
  • 【map/map扩充】和数检测

    题目描述

    给定n个正整数d1, d2, …, dn。如果取出其中的任意两个数(可以相同),则可以得到这两个数的和。对于n个数,则至多可以产生(n×(n+1))/2种不同的和。
    给出正整数m,你需要判断:是否存在两个整数u, v,满足du + dv = m。

    输入

    本题一个输入中包含多组数据。输入第一行为一个整数T,表示数据组数。
    对于每组数据,输入的第一行为两个正整数n, m,输入的第二行为n个正整数d1, d2, …, dn。
     

    输出

    输出T行,每行一个整数。如果正整数u, v存在,则输出1;否则输出0。
    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    int n,m,t;
    int a[1000005];
    int scan()
    {
        int res = 0, flag = 0;
        char ch;
        if ((ch = getchar()) == '-')
        {
            flag = 1;
        }
        else if(ch >= '0' && ch <= '9')
        {
            res = ch - '0';
        }
        while ((ch = getchar()) >= '0' && ch <= '9')
        {
            res = res * 10 + (ch - '0');
        }
        return flag ? -res : res;
    }
     
    void Out(int a)
    {
        if (a < 0)
        {
            putchar('-');
            a = -a;
        }
        if (a >= 10)
        {
           Out(a / 10);
        }
        putchar(a % 10 + '0');
    }
     
    int main()
    {
        scanf("%d",&t);
        while(t--)
        {
            unordered_map<int,int> mp;
            n=scan();
            m=scan();
            int f=1;
            int x;
            for(int i=0;i<n;i++)
            {
                a[i]=scan();
                if(f){
                if(mp[m-a[i]]==1)
                {
                    f=0;
                }
                if(mp[m-a[i]]!=1)
                {
                    mp[a[i]]=1;
                    mp[m-a[i]]=2;
                }
                if(mp[a[i]]==2)
                {
                    f=0;
                }
                }
                //cout<<mp[a[i]]<<" "<<mp[m-a[i]]<<endl;
            }
            if(f)
                printf("0
    ");
            else
                printf("1
    ");
        }
        return 0;
    }
  • 相关阅读:
    继承
    包、logging模块、hashlib模块、openpyxl模块、深浅拷贝
    Java中的Lambda表达式
    Java中udp/tcp的发送和接收
    Java中的IO流总结
    Java中的多线程
    Java中使用try-catch-finally处理IO流中的异常
    Java中的杂流(闸总)
    Java中的Properties
    Java中IO流之字符流
  • 原文地址:https://www.cnblogs.com/Diliiiii/p/10284756.html
Copyright © 2011-2022 走看看