给定n个正整数d1, d2, …, dn。如果取出其中的任意两个数(可以相同),则可以得到这两个数的和。对于n个数,则至多可以产生(n×(n+1))/2种不同的和。
给出正整数m,你需要判断:是否存在两个整数u, v,满足du + dv = m。
标签:包含 需要 getc clu efi lse 数据 put class
#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\n"); else printf("1\n"); } return 0; }
标签:包含 需要 getc clu efi lse 数据 put class
原文地址:https://www.cnblogs.com/Diliiiii/p/10284756.html