竞赛
考级
法兰西玫瑰
#include <iostream> using namespace std; int main() { int n,t=0; int a[10000],b[10000]; cin>>n; for(int i=1;i<=n;i++) { cin>>b[i]; a[b[i]]=1; } for(int i=1;i<=n-1;i++) { for(int j=i+1;j<=n;j++) { if(a[(b[i]+b[j])]==1) { a[b[i]+b[j]]=0; t=t+1; } } } cout<<t; return 0; }
chaizechen
#include <regex> int a[10001],x,num,n;int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&x);a[x];}for(int i=1;i<=10000;i){if(a[i]==0)continue;for(int j=1;j<i-j;j++)if(a[j]==1&&a[i-j]==1){num++;break;}}printf("%d",num);}
史莱克七怪
#include <iostream> using namespace std; int n, a[105], b[1000005]; int main() { int n; 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) { int sum = a[i] + a[j]; b[sum] = 1; } int cnt=0; for(int i=1; i<=n; ++i) if(b[a[i]] == 1) ++cnt; cout<<cnt; return 0; }
HAPPY猫
思路是将这一组数据存入两个数组之中,用一个数组去重 使用的是简单的 forforfor 循环和两个一维数组。 比如 111 333 666 444 555 888 这一串数字, 111 和 333 666 444 555 888 可以相加, 333 可以和 666 444 555 888 组合,以此类推。 题目的意思不仅仅是 1+41+41+4 和 4+14+14+1 算重复,就算是 1+41+41+4 和 2+32+32+3 也算是重复的情况请务必注意。
AC君
#include<bits/stdc++.h> using namespace std; int num[100001],a[101],cnt; int main(){ int n; cin>>n; for(int i=1;i<=n;i){ scanf("%d ",&a[i]); num[a[i]]; } for(int i=1;i<=n;++i){ for(int j=1;j<=n;j){ if(a[i]!=a[j]*2&&a[i]>a[j]&&num[a[i]-a[j]]){ cnt; break; } } } cout<<cnt; return 0; }
jodiojostar
题库管理员