173 条题解
- 
  0SZZXhsc LV 5 @ 2016-09-28 18:37:51 简单#include<iostream> using namespace std; int main(){ int n,a[102],ans=0,i,j,k; cin>>n; for(i=0;i<n;++i){ cin>>a[i]; } for(i=0;i<n;++i){ for(j=0;j<n;++j){ for(k=0;k<n;++k){ if(a[i]==a[j]+a[k]&&j!=k){ ++i; j=k=0; ++ans; } } } } cout<<ans; return 0; }
- 
  0@ 2016-09-05 11:06:56C #include <stdio.h> #include <stdlib.h> int main() { int n, i; scanf("%d",&n); int a[100]; for(i=0;i<n;i++) { scanf("%d",&a[i]); } int j, k, t, s = 0; for(i=0;i<n;i++) { for(j=0;j<n-1;j++) { t = 1; for(k=j+1;k<n;k++) { if(k!=i && j!=i && a[k]+a[j]==a[i]) { t=0; break; } } if(t == 0) { s++; break; } } } printf("%d",s); return 0; }
- 
  0@ 2016-08-24 13:54:32题目有坑,还是个大坑!!!5=2+3和5=1+4是算同一个的!!!!!!!! 
 var
 n,i,j,k,ans:longint;
 a,b:array[1..10000] of longint;
 procedure qsort(l,r:longint);
 var
 i,j,mid,p:longint;
 begin
 i:=l;
 j:=r;
 mid:=a[(l+r) div 2];
 repeat
 while a[i]<mid do inc(i);
 while a[j]>mid do dec(j);
 if i<=j then begin
 p:=a[i]; a[i]:=a[j]; a[j]:=p;
 inc(i);
 dec(j);
 end;
 until i>j;
 if l<j then qsort(l,j);
 if i<r then qsort(i,r);
 end;
 begin
 readln(n);
 for i:=1 to n do begin
 read(a[i]);
 end;
 readln;
 qsort(1,n);
 for i:=3 to n do begin
 for j:=1 to i-2 do begin
 for k:=j+1 to i-1 do begin
 if a[j]+a[k]=a[i] then begin
 b[i]:=1;
 end;
 end;
 end;
 end;
 for i:=1 to n do begin
 if b[i]=1 then inc(ans);
 end;
 writeln(ans);
 end.
- 
  0@ 2016-08-12 21:47:47评测结果 
 编译成功测试数据 #0: Accepted, time = 15 ms, mem = 520 KiB, score = 10 
 测试数据 #1: Accepted, time = 15 ms, mem = 516 KiB, score = 10
 测试数据 #2: Accepted, time = 0 ms, mem = 516 KiB, score = 10
 测试数据 #3: Accepted, time = 0 ms, mem = 512 KiB, score = 10
 测试数据 #4: Accepted, time = 0 ms, mem = 512 KiB, score = 10
 测试数据 #5: Accepted, time = 0 ms, mem = 516 KiB, score = 10
 测试数据 #6: Accepted, time = 15 ms, mem = 516 KiB, score = 10
 测试数据 #7: Accepted, time = 0 ms, mem = 516 KiB, score = 10
 测试数据 #8: Accepted, time = 0 ms, mem = 512 KiB, score = 10
 测试数据 #9: Accepted, time = 0 ms, mem = 516 KiB, score = 10
 Accepted, time = 45 ms, mem = 520 KiB, score = 100
 代码
 #include <stdio.h>
 #include <string.h>int main() 
 {
 int n,mark=0;
 scanf("%d",&n);
 int group[n],max,t;
 for(int p=0;p<n;p++)
 scanf("%d",&group[p]);
 for(max=group[0],t=1;t<n;t++)
 {
 if(group[t]>max)
 max=group[t];
 }int box[max]; 
 memset(box,0,sizeof(int)*max);
 for(int k=0;k<n;k++)
 box[group[k]-1]=1;for(int f=0;f<n-1;f++) 
 {
 for(int r=f+1;r<n;r++)
 {
 for(int g=0;g<n;g++)
 {
 if((box[group[g]-1]==1) && group[f]+group[r]==group[g])
 {
 mark++;
 box[group[g]-1]=0;
 break;
 }
 }
 }
 }printf("%d",mark); 
 return 0;
 }
- 
  0@ 2016-08-12 10:02:51评测结果 编译成功 测试数据 #0: Accepted, time = 0 ms, mem = 524 KiB, score = 10 测试数据 #1: Accepted, time = 0 ms, mem = 524 KiB, score = 10 测试数据 #2: Accepted, time = 0 ms, mem = 528 KiB, score = 10 测试数据 #3: Accepted, time = 0 ms, mem = 528 KiB, score = 10 测试数据 #4: Accepted, time = 0 ms, mem = 528 KiB, score = 10 测试数据 #5: Accepted, time = 0 ms, mem = 524 KiB, score = 10 测试数据 #6: Accepted, time = 0 ms, mem = 524 KiB, score = 10 测试数据 #7: Accepted, time = 0 ms, mem = 528 KiB, score = 10 测试数据 #8: Accepted, time = 0 ms, mem = 528 KiB, score = 10 测试数据 #9: Accepted, time = 0 ms, mem = 524 KiB, score = 10 Accepted, time = 0 ms, mem = 528 KiB, score = 100 代码 #include <bits/stdc++.h> bool hash[20001]; int a[1001],n,ans = 0; int main() { //freopen("count.in","r",stdin); //freopen("count.out","w",stdout); scanf("%d",&n); memset(hash,false,sizeof(hash)); for (int i = 1;i <= n;i++) scanf("%d",&a[i]); for (int i = 1;i <= n;i++) for (int j = 1;j <= n;j++) { if (i == j) continue; hash[a[i]+a[j]] = true; } for (int i = 1;i <= n;i++) if (hash[a[i]]) ans++; printf("%d",ans); return 0; }
- 
  0@ 2016-08-10 17:55:48#include <cstdio> #include <cstring> const int MAXN=20009; int main(){ int a[MAXN],ans=0,n; bool vis[MAXN]; scanf("%d",&n); memset(vis,false,sizeof(vis)); for (int i=1;i<=n;i++){ scanf("%d",&a[i]); for (int j=1;j<=i-1;j++) if (a[i]!=a[j]) vis[a[i]+a[j]]=true; } vis[1]=false; for (int i=1;i<=n;i++) if (vis[a[i]]) ans++; printf("%d",ans); return 0; }
- 
  0@ 2016-08-09 17:53:37//发现符合条件后即可跳出,进入下一个数。 代码 #include<stdio.h> int main() { int n,i,j,k,a[101],re=0; scanf("%d",&n); for(i=0;i<n;i++)scanf("%d",&a[i]); for(i=0;i<n;i++) { for(j=0;j<n;j++) for(k=0;k<n;k++) if(a[i]==a[j]+a[k]&&j!=k){i++;j=0;k=0;re++;} } printf("%d",re); return 0; }```
- 
  0@ 2016-08-03 08:47:25var 
 i,j,k,n,x:longint;
 a:array[0..100] of longint;
 b:array[0..100] of boolean;
 procedure paixu;
 var
 i,j:integer;
 beginfor i:=1 to n-1 do 
 for j:=n downto i+1 do
 if a[j]<a[j-1] then
 begin
 a[0]:=a[j];
 a[j]:=a[j-1];
 a[j-1]:=a[0];
 end;end; begin 
 readln(n);
 for i:=1 to n doread(a[i]); 
 paixu;
 for i:=1 to n do
 for j:=1 to n do
 for x:=1 to n do
 if (i<j) and (j<x) and (a[i]+a[j]=a[x])
 then
 begin
 b[x]:=true;
 end;
 for i:=1 to 100 do
 if b[i] then k:=k+1;
 writeln(k);
 readln;
 readln;
 end.
- 
  0@ 2016-07-30 20:40:20用map随便搞搞就好了 
 ```
 #include <iostream>
 #include <cstdio>
 #include <cstring>
 #include <map>
 using namespace std;int cnt=0,N; 
 int a[110];
 map<int,bool> m;
 int main(){
 cin>>N;
 for(int i=1;i<=N;++i){
 cin>>a[i];
 }
 for(int i=1;i<=N;++i){
 for(int j=1;j<=N;++j){
 if(i!=j){
 m[a[i]+a[j]]=true;
 }
 }
 }
 for(int i=1;i<=N;++i){
 if(m[a[i]]){
 cnt++;
 }
 }
 cout<<cnt;
 return 0;
 }
 ```
- 
  0@ 2016-07-26 17:28:30#include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <algorithm> #include <cstring> #include <queue> using namespace std; int n,x,a[20008],ans; bool b[30000]; int main() { //ios::sync_with_stdio(0); cin>>n; for(int i=1;i<=n;i++) { cin>>x; a[x]++; } for(int i=1;i<=10000;i++) if(a[i]) for(int j=i+1;j<=10000;j++) { if(a[j]&& b[i+j]==0 &&a[i+j]) { //cout<<i+j<<endl; b[i+j]=1; ans++; } if(i+j>10000) break; } cout<<ans; return 0; }
- 
  0@ 2016-07-14 22:58:48#include <cstdio> int main(){ 
 // freopen("in.txt","r",stdin);
 int n,a[500],c2[101]={0},count=0;
 scanf("%d",&n);
 for(int i=1;i<=n;i++)
 scanf("%d",&a[i]);
 for(int k=1;k<=n;k++)
 for(int i=1;i<=n;i++)
 for(int j=i+1;j<=n;j++)
 if(a[k]==a[i]+a[j]&&k!=i&&k!=j)
 c2[k]++;
 for(int i=1;i<=n;i++)
 if(c2[i]>0)
 count++;
 printf("%d",count);
 return 0;
 }
- 
  0@ 2016-07-04 15:43:35测试数据 #0: Accepted, time = 0 ms, mem = 488 KiB, score = 10 
 测试数据 #1: Accepted, time = 15 ms, mem = 488 KiB, score = 10
 测试数据 #2: Accepted, time = 0 ms, mem = 484 KiB, score = 10
 测试数据 #3: Accepted, time = 0 ms, mem = 488 KiB, score = 10
 测试数据 #4: Accepted, time = 15 ms, mem = 488 KiB, score = 10
 测试数据 #5: Accepted, time = 0 ms, mem = 488 KiB, score = 10
 测试数据 #6: Accepted, time = 0 ms, mem = 488 KiB, score = 10
 测试数据 #7: Accepted, time = 0 ms, mem = 488 KiB, score = 10
 测试数据 #8: Accepted, time = 0 ms, mem = 484 KiB, score = 10
 测试数据 #9: Accepted, time = 0 ms, mem = 484 KiB, score = 10
 Accepted, time = 30 ms, mem = 488 KiB, score = 100C: #include <stdio.h> int main() { 
 int i, j, k, count=0;
 int n, A[101], b[101];
 scanf("%d", &n);
 for(i=1; i<=n; i++) scanf("%d", &A[i]);
 for(i=1; i<=n; i++) {
 for(j=1; j<=n; j++) {
 for(k=j+1; k<=n; k++) {
 if(A[i] == A[j] + A[k]) {
 b[i] = 1;
 }
 }
 }
 }
 for(i=1; i<=n; i++) {
 if(b[i] == 1) count++;
 }
 printf("%d", count);
 return 0;
 }
- 
  0@ 2016-06-27 17:27:36#include<iostream> #include<cstdio> using namespace std; const int maxn = 100 + 5; const int maxnum = 100000 + 10; int n; int ans; int maxx; int num[maxn]; bool vis[maxnum]; bool vis1[maxnum]; int main () { //freopen ("in.txt", "r", stdin); cin >> n; for (int i = 0; i < n; i++) { cin >> num[i]; vis1[num[i]] = true; maxx = max (maxx, num[i]); } for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) if (i != j && num[i] + num[j] <= maxnum) vis[num[i]+num[j]] = true; for (int i = 0; i <= maxx; i++) { if (vis[i] && vis1[i]) ans++; } cout << ans; return 0; }
- 
  0@ 2016-05-28 21:44:30#include<cstdio> int hash[10010],a[120],n,ans; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); int q=a[i]; hash[q]=1; } for(int i=1;i<=n;i++) for(int j=1;j<i;j++){ int q=a[i]+a[j]; if(hash[q]==1){ ans++; hash[q]=0; } } printf("%d\n",ans); return 0; }为什么会 runtimeerror?? 
- 
  0@ 2016-05-22 14:53:03我觉得这道题应该注意的是:“其中有多少个数,恰好等于集合中另外两个(不同的)数之和”, 而不是:“集合中有多少对数的和在集合中”。不认真读题吃亏啊! 
- 
  0@ 2016-05-15 14:33:10钙氧氮碘钡钡 
- 
  0@ 2016-05-06 18:22:53测试数据 #0: Accepted, time = 0 ms, mem = 556 KiB, score = 10 
 测试数据 #1: Accepted, time = 0 ms, mem = 556 KiB, score = 10
 测试数据 #2: Accepted, time = 0 ms, mem = 556 KiB, score = 10
 测试数据 #3: Accepted, time = 0 ms, mem = 556 KiB, score = 10
 测试数据 #4: Accepted, time = 0 ms, mem = 560 KiB, score = 10
 测试数据 #5: Accepted, time = 0 ms, mem = 556 KiB, score = 10
 测试数据 #6: Accepted, time = 0 ms, mem = 556 KiB, score = 10
 测试数据 #7: Accepted, time = 0 ms, mem = 560 KiB, score = 10
 测试数据 #8: Accepted, time = 0 ms, mem = 560 KiB, score = 10
 测试数据 #9: Accepted, time = 0 ms, mem = 560 KiB, score = 10
 #include<iostream>
 using namespace std;
 int ans;
 int a[101];
 int n;
 bool p[101];
 int main()
 {
 int i,j,k;
 cin>>n;
 for(i=1;i<=n;i++)
 cin>>a[i];
 for(i=1;i<=n-1;i++)
 for(j=i+1;j<=n;j++)
 if(a[i]>a[j])
 swap(a[i],a[j]);
 for(i=1;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])
 p[k]=1;
 for(i=1;i<=n;i++)
 if(p[i]==1)
 ans++;
 cout<<ans;
 }
- 
  0@ 2016-04-23 15:16:31#include <stdio.h> int main() { int n; int a[101]; int i,j,k; int times=0; int m,tmp; scanf("%d",&n); m = n; j=0; for (i=1; i<=n; i++) { scanf("%d",&tmp); if (tmp<=10000) { j++; a[j]=tmp; } } n=j; for (i=1;i<n;i++) for (j=n; j>i; j--) { if ((a[i]==a[j])&&(j<=m)) { a[j]=a[m]; m--; } } for (i=1; i<m-1; i++) { for (j=i+1; j<m; j++) { for (k=j+1; k<=m; k++) { if ((a[i]+a[j]==a[k])||(a[j]+a[k]==a[i])||(a[i]+a[k]==a[j])) { times+=1; } } } } printf("%d\n",times); }我认为这题答案其实存在错误,根据大家给的答案,这题正确答案把0+a=a的情况算入了结果中。 
- 
  0@ 2016-04-08 22:08:19求大神指点错误! #include "stdafx.h" 
 #include<iostream>
 #include<string.h>
 using namespace std;
 bool check[10000];
 bool checkn[20000];
 int ele[100];
 int sum[100];
 int main()
 {
 memset(checkn, false, sizeof(checkn));
 int n, p = 0;
 cin >> n;
 for (int t = 0; t < n; t++)
 {
 cin >> ele[t];
 check[ele[t]] = true;
 }
 for (int i = 0; i < n; i++)
 {
 for (int j = i + 1; j < n; j++)
 {
 if (check[ele[i] + ele[j]])
 {
 sum[p] = ele[i] + ele[j];
 p++;
 }
 }
 }
 int count = 0;
 for (int i = 0; i < p; i++)
 {
 if (checkn[sum[i]] == false)
 count++;
 checkn[sum[i]] = true;
 }
 cout << count << endl;
 return 0;
 }
- 
  0@ 2016-03-22 07:42:30#include<cstdio> 
 #include<iostream>
 using namespace std;
 int n,a[110];
 bool flag[10010];
 int main()
 {
 int i,j,k,ans=0;
 scanf("%d",&n);
 for(i=1;i<=n;i++)
 scanf("%d",&a[i]);
 for(i=1;i<=n;i++)
 flag[a[i]]=1;
 for(i=1;i<=n;i++)
 for(j=i+1;j<=n;j++)
 if(a[i]+a[j]<=10000 && flag[a[i]+a[j]])
 flag[a[i]+a[j]]=0,ans++;
 printf("%d\n",ans);
 return 0;
 }
信息
- ID
- 1911
- 难度
- 6
- 分类
- (无)
- 标签
- 递交数
- 17156
- 已通过
- 4540
- 通过率
- 26%
- 被复制
- 30
- 上传者