173 条题解
-
0
wangjun_92 LV 6 @ 7 年前
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;public class Main {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
List<Integer> list = new ArrayList<Integer>();
for(int i=0;i<n;i++){
int m = scanner.nextInt();
list.add(m);
}
Set<Integer> set = new HashSet<Integer>();
for(Integer i:list){
for(Integer j:list){
if(i != j){
int m = i + j;
if(list.contains(m)){
set.add(m);
}
}
}
}
System.out.println(set.size());
scanner.close();
}
} -
07 年前@
-
07 年前@
-
07 年前@
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>int main()
{
int n,i,j,k,c=0,a[100],t,b[100];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++)
for(j=0;j<n-1;j++)
{
if(a[j]>a[j+1])
{
t=a[j];a[j]=a[j+1];a[j+1]=t;
}
}
for(i=0;i<n;i++)
b[i]=a[i];
for(i=0;i<n-2;i++)
for(j=i+1;j<n-1;j++)
for(k=j+1;k<n;k++)
{
if(a[i]+a[j]==a[k]&&b[k]!=0)
{c++;b[k]=0;}
}
printf("%d\n",c);
return 0;
} -
07 年前@
C++比较好理解的方法:
#include<iostream>
using namespace std;int main()
{
int n,tot=0;
cin>>n;
int m[n];
for(int i=0;i!=n;++i)
cin>>m[i];
//先排序:
for(int i=0;i!=n-1;++i)
{
int maxid=0;
for(int j=1;j!=n-i;++j)
if(m[j]>m[maxid]) maxid=j;
int t=m[maxid];
m[maxid]=m[n-1-i];
m[n-1-i]=t;
}
//定义一个数组避免重复得结果:
int a[n];
for(int i=0;i!=n;++i)
a[i]=m[i];
//循环判断:
for(int i=0;i!=n-2;++i)
{
for(int j=i+1;j!=n-1;++j)
{
for(int k=j+1;k!=n;++k)
if(m[i]+m[j]==a[k]) {++tot;a[k]=0;}
}
}
cout<<tot<<endl;
} -
07 年前@
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;int main()
{
int N;
unordered_map<int, int> s;
std::cin >> N;
vector<int> nums(N, 0);
for (int i = 0; i < N; ++i) {
std::cin >> nums[i];
s[nums[i]]++;
}int result = 0;
for (int i=0; i<nums.size(); ++i) {
for (int j=i+1; j<nums.size(); ++j) {
if (s.find(nums[i]+nums[j])!=s.end()) {
if (s[nums[i]+nums[j]] == 1)
result++;
s[nums[i]+nums[j]]++;
}
}
}
std::cout << result;
} -
07 年前@
n = int(raw_input())
a = [int(i) for i in raw_input().split()]
s = set([i + j for i in a for j in a if i != j and i + j in a])
print len(s) -
07 年前@
-
07 年前@
-
07 年前@
终于过了
#include <stdio.h>
int main()
{
int a[100];
int c[100];
int i,j,n,k,l,b,s;
scanf("%d",&n);
s=0;
for(i=1;i<=n;i++) scanf("%d",&a[i]);
for(i=1;i<=n;i++) c[i]=-1;
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
for(k=1;k<=n;k++) {
b=a[i]+a[j];
if(b==a[k]){
for(l=1;l<=n;l++) if(a[k]==c[l]) {
l=0;break;}
if(l==0) break;
s++;
c[s]=b;}}
printf("%d",s);}
-
07 年前@
//以通过
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;bool equal(vector<int>&vec2, int val)
{
for (auto i = vec2.begin(); i != vec2.end(); i++)
{
if (val == *i)
{
i = vec2.erase(i); //注意erase用法
return 1;
}
}
return 0;}
int main()
{
vector<int>vec1,vec2;
int n, t , count = 0;
cin >> n;while (n--)
{
cin >> t;
vec1.push_back(t); //存入
}
sort(vec1.begin(),vec1.end()); //排序 注意排序用法
vec2 = vec1;for (auto i = vec1.begin(); i != vec1.end(); i++)
{
for (auto i2 = i+1; i2 != vec1.end(); i2++)
{
auto temp = *i2 + *i;if (equal(vec2, temp))
count++;
}
}cout << count;
return 0;
} -
07 年前@
做了快不下10次 最后发现没看懂题 想复杂了(逃
-
07 年前@
//纯暴力
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
int N[101],ans,vis[101];
int main()
{
int n;cin>>n;
for(int i=1;i<=n;i++)
cin>>N[i];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
if(N[j]+N[k]==N[i]&&!vis[i]&&j!=k&&i!=j&&i!=k)
{
vis[i]=1;
ans++;
}
}
cout<<ans;
return 0;
} -
07 年前@
#include<iostream>
using namespace std;
const int maxn=200000;
int a[maxn],fin[maxn],n,ans;
int main ()
{
cin>>n;
for (int i=1;i<=n;i++)
cin>>a[i];
for (int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
fin[a[i]+a[j]]=1;
for (int i=1;i<=n;i++)
if (fin[a[i]])
ans++;
cout<<ans;
} -
07 年前@
注意需要处理第二行数字的个数
-
07 年前@
#include<iostream>
using namespace std;
int main()
{
int n,i,j,sum=0,c[20100],a[110];
cin>>n;for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
c[a[i]+a[j]]=1;
for(i=0;i<n;i++) if(c[a[i]]==1)
sum++;
cout<<sum;
} -
07 年前@
-
07 年前@
program num;
var
i,ans,n,j,k:longint;
a:array [1..100] of longint;
g:array [1..10000] of longint;
procedure kp(l,r:longint);
var
i,j,m,t:longint;
begin
i:=l; j:=r;
m:=a[(l+r) div 2];
repeat
while a[i]<m do inc(i);
while a[j]>m do dec(j);
if i<=j then begin
t:=a[i]; a[i]:=a[j]; a[j]:=t;
inc(i); dec(j);
end;
until i>j;
if l<j then kp(l,j);
if i<r then kp(i,r);
end;
begin
fillchar(g,sizeof(g),0);
readln(n); ans:=0;
for i:=1 to n do read(a[i]);
kp(1,n);
for i:=1 to n-2 do
for j:=i+1 to n-1 do
for k:=j+1 to n do
if (a[i]+a[j]=a[k])and(g[a[k]]=0) then begin inc(g[a[k]]); inc(ans); end;
writeln(ans);
end. -
07 年前@
-
07 年前@
亲测AC代码(NB指the bigger number)
信息
- ID
- 1911
- 难度
- 6
- 分类
- (无)
- 标签
- 递交数
- 17129
- 已通过
- 4532
- 通过率
- 26%
- 被复制
- 28
- 上传者