173 条题解
- 
  0Jong-oo LV 8 @ 2020-04-13 14:08:33 #include <iostream> //[2014普及组-A]珠心算测验 #include <algorithm> #include <map> using namespace std; int main() { //map<int, int> m; int m[20001] = {0}; int n, num, ans = 0; int N[100] = {0}; cin >> n; for (int i = 0; i < n; i++) { cin >> num; N[i] = num; m[num] = 1; } for (int i = 0; i < n - 1; i++) for (int j = i + 1; j < n; j++) if(m[N[i] + N[j]] == 1) { m[N[i] + N[j]] = 0; ans++; } cout << ans << endl; return 0; }
- 
  0@ 2020-03-10 18:02:27思路:数组计数,由于只记是否出现,用bitset压缩空间 #include <iostream> #include <bitset> using namespace std; int main() { bitset<20001> t;//其无参构造函数将全部元素置0,不需初始化 int n, n_set[100], ans = 0; scanf("%d", &n); for (int i = 0; i < n; ++i) scanf("%d", &n_set[i]); for (int i = 0; i < n; ++i) for (int j = 0; j < i; ++j) t[n_set[i] + n_set[j]] = 1; for (int i = 0; i < n; ++i) if (t[n_set[i]])++ans; printf("%d", ans); }
- 
  0@ 2020-03-05 22:18:26#include<iostream> 
 #include<cstdio>
 #include<algorithm>using namespace std; 
 int a[110]={};
 int b[20002]={};int main(){ 
 int n;
 cin>>n;
 int *q;
 int count=0;
 for(int i=0;i<n;i++){
 cin>>a[i];
 b[a[i]]=1;
 }
 int x;
 for(int j=0;j<n-1;j++){
 for(int k=j+1;k<n;k++){
 x=a[j]+a[k];
 if(b[x]==1){
 count++;
 b[x]=0;
 }
 }
 }
 cout<<count<<endl;
 return 0;
 }
- 
  0@ 2019-12-22 10:30:55#include<stdio.h> 
 int main()
 {
 int n;
 int i,b,c,a[100],count=0;
 scanf("%d",&n);
 for(i=0;i<n;i++)
 scanf("%d",&a[i]);
 for(i=0;i<n;i++)
 for(b=0;b<n;b++)
 for(c=0;c<n;c++)
 if(b!=c && (a[i]==a[b]+a[c]))
 {
 count++;
 i++;
 b=0;c=0;
 }
 printf("%d",count);
 return 0;
 }
- 
  0@ 2019-12-12 14:31:10#include<iostream> 
 using namespace std;int main() 
 {
 int N;
 cin >> N;
 int *num = new int[N];
 int a = 0;
 int res = 0;
 int temp = 0;
 for (int i = 0; i < N; i++)
 {
 cin >> a;
 num[i] = a;
 }
 for (int i = 0; i < N; i++)
 {
 for (int j = 0; j < N; j++)
 {
 for (int k = j+1; k < N; k++)
 {
 temp = res;
 if ((num[i] == num[j] + num[k])&&(j!=k))//对num里的每个数进行遍历,为避免重复,(5 = 1+4,5=2+3),应跳出两重循环。
 {
 res++;
 break;
 }
 }
 if (res > temp)
 {
 break;
 }
 }
 }
 cout << res << endl;
 return 0;
 }
- 
  0@ 2019-11-21 09:17:35#include<iostream> 
 using namespace std;
 int main(){
 int n;
 cin >> n;
 int num;
 num = (int)malloc(sizeof(int)*n);
 for (int i = 0; i < n; i++){
 cin >> num[i];
 }
 int lable = 0;
 int current = 0;
 while (current<=(n-1))
 {
 int limit = 0;
 for (int i = 0; i < n; i++){
 for (int j = 0; j < n; j++){
 if (j != i&&j != current&&i != current&&limit==0){
 if (num[i] + num[j] == num[current]){
 lable++;
 limit++;
 cout << "hhh" << endl;
 cout << " " << num[i] << " " << num[j] << " " << num[current]<<endl;
 break;
 }
 }
 }
 }
 current++;
 }
 cout << lable << endl;
 return 0;
 }
- 
  0@ 2019-11-15 15:24:35/*此算法虽然不高级,但是好理解, 
 就是建立一个数组b来存两数相加的值,然后遍历a[0]-a[n-1]
 如有a[i]==数组b中的一个值,sum++;并且要break避免重复。
 */#include<iostream> #include<cstdio> #include<cstring> using namespace std; int main() { int b[100002]; int h=0; int i=0; int sum=0; int n; int j; cin>>n; int a[n]; for(int k=0;k<n;k++) cin>>a[k]; for(i=0;i<n;i++){ for(j=i+1;j<n;j++){ b[h]=a[i]+a[j]; h++; } } for(j=0;j<n;j++){ for(i=0;i<h;i++){ if(a[j]==b[i]){ sum++; break; } } } cout<<sum; return 0; }
- 
  0@ 2019-10-19 23:58:14#include<iostream> 
 #include<algorithm>
 using namespace std;
 bool cmp(int a,int b)
 {
 return a<b;
 }
 int main()
 {
 int n;
 cin>>n;
 int *num = new int[n];
 for(int i=0;i<n;i++)
 {
 cin>>num[i];
 }
 sort(num,num+n,cmp);
 int cnt = 0;
 for(int i=2;i<n;i++)
 {
 for(int j=0,k=i-1;j<k;)
 {
 if(num[j]+num[k]==num[i])
 {
 cnt++;
 break;
 }else if(num[j]+num[k]<num[i]) j++;
 else k--;
 }
 }
 cout<<cnt<<endl;
 }
- 
  0@ 2019-10-10 14:58:47#include<iostream> 
 using namespace std;
 int main(){
 int number;
 const int N=100;
 long int test[N];
 int op=0;
 int i=0;
 int u;
 int count=0;
 int iffind=0;
 cin>>number;
 for(;i<number;i++){
 cin>>test[i];
 }
 for(i=0;i<number;i++){
 iffind=0;
 for(u=0;u<number-1;u++){
 if(iffind==1) break;
 for(op=u+1;op<number;op++){
 if(op!=i&&u!=i&&test[i]==test[u]+test[op]){
 count++;
 iffind=1;
 break;
 }
 }
 }
 }
 cout<<count;
 }
- 
  0@ 2018-12-06 20:45:40#include <iostream> 
 using namespace std;
 int main()
 {
 int a[20002]={0};
 bool visited[20002]={0};
 int n;
 cin>>n;
 int x,sum=0;
 int maxi = 0;
 while(n--){
 cin>>x;
 a[x] = 1;
 if(maxi<x)
 maxi = x;
 }
 for(int i = 1;i < maxi; i++){
 if(a[i]==1)
 for(int j = i+1;j <= maxi; j++){
 if(a[j]==1){
 if(a[i+j]==1&&visited[i+j]!=1){
 sum++;
 visited[i+j] = 1;
 }
 }
 }
 }
 cout<<sum;} 
- 
  0@ 2018-11-04 12:52:40c++代码 
 #include<bits/stdc++.h>
 using namespace std;
 int a[103],b[103];
 int main(){
 int n,s=0;
 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++)
 for(int q=1;q<=n;q++)
 if(a[j]!=a[q] && a[j]+a[q]==a[i]) b[i]=1;
 for(int i=1;i<=n;i++)
 if(b[i]==1) s++;
 cout<<s;
 return 0;
 }
- 
  0@ 2018-10-07 08:26:04#include<iostream> 
 #include<cstdio>
 using namespace std;
 int t[200005],g[200005];
 int n,a[105],ans;
 int main(){
 cin>>n;
 for (int i=1;i<=n;i++){
 cin>>a[i];
 g[a[i]]=1;
 }
 for (int i=1;i<n;i++){
 for (int j=i+1;j<=n;j++){
 t[a[i]+a[j]]++;
 }
 }
 for (int i=1;i<=200002;i++){
 if (t[i]>0&&g[i]) ans++;
 }
 cout<<ans<<endl;
 return 0;
 }
- 
  0@ 2018-10-06 11:02:01题目略坑,看懂就行 #include <stdio.h> 
 #include <string.h>
 int main()
 {
 int n,ans;
 int a[20000];
 int b[20000];
 memset(b,0,sizeof(b));
 ans=0;
 scanf("%d",&n);
 for (int i=1;i<=n;i++)
 {
 scanf("%d",&a[i]);
 b[a[i]]=1;
 }
 for (int j=1;j<=n;j++)
 {
 for (int k=j+1;k<=n;k++)
 {
 if (b[a[j]+a[k]]==1)
 {
 b[a[j]+a[k]]=2;
 }
 }
 }
 for (int l=1;l<=n;l++)
 {
 if (b[a[l]]==2)
 {
 ans++;
 }
 }
 printf("%d",ans);
 return 0;
 }
- 
  0@ 2018-08-16 20:34:44#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int counter = 0; int num[100]; int n; int i, j, k, flag; scanf("%d",&n); for(i = 0; i < n; i++) scanf("%d",num + i); for(i = 0; i < n; i++) { flag = 0; for(j = 0; j < n; j++) for(k = 0; k < n; k++) if(num[i] == (num[j] + num[k]) && i != k && i != j && j != k) flag = 1; if(flag) counter++; } printf("%d",counter); return 0; }
- 
  0@ 2018-08-07 15:03:49#include<iostream> 
 using namespace std;
 int b[110];
 int main(){
 int n;
 int a,sum=0;
 cin>>n;
 for(int i=0;i<n;i++){
 cin>>a;
 b[i]=a;
 }
 for(int i=0;i<n;i++)
 {
 int flag=0;
 for(int j=0;j<n;j++)
 {
 for(int w=0;w<n;w++)
 {
 if(b[i]==b[w]+b[j]&&flag==0&&i!=w&&i!=j&&j!=w)
 {
 flag=1;
 sum++;
 }
 }
 }
 }
 cout<<sum;
 return 0;
 }
- 
  0@ 2018-07-19 20:26:48#include<stdio.h> 
 int main ()
 {
 int i,j,k=0,l=0,n,x,m=0;
 scanf("%d",&n);
 int a[n];
 for(i=0;i<n;i++)
 scanf("%d",&a[i]);while(k<n) 
 {
 for(i=0;i<n;i++)
 for(j=i+1;j<n;j++)
 if(a[i]+a[j]==a[k]&&a[i]!=a[j]&&k<n)
 {
 m++;
 k++;
 break;
 }
 if(l==k)
 k++;
 l++;} 
 printf("%d",m);
 return 0;
 }
- 
  0@ 2018-04-25 19:54:39int n, count = 0; scanf("%d",&n); int *a = (int *)malloc(sizeof(int)*n); int *c = (int *)malloc(sizeof(int)*20000); for (int i = 0; i != n;++i) { scanf("%d",a+i); } for (int i = 0; i != n - 1;++i) { for (int j = i + 1; j != n;++j) { c[a[i] + a[j]] = 1; } } for (int i = 0; i != n;++i) { if (c[a[i]]==1){ ++count; } } printf("%d\n", count); free(a); free(c);
- 
  0@ 2018-03-18 20:24:07数据太水了,暴力都能过…… #include<bits/stdc++.h> using namespace std ; //Vijos P1911 bool x[20000] ; int main() { int y[100] , n , ans = 0 ; scanf("%d" , &n) ; for (int i = 0 ; i < n ; i ++) { scanf("%d" , &y[i]) ; } for (int i = 0 ; i < n - 1 ; i ++) for (int j = i + 1 ; j < n ; j ++) { x[y[i] + y[j]] = true ;//有这个和的打上标记 } for (int i = 0 ; i < n ; i ++) { if (x[y[i]]) ans ++ ;//打过标记的个数就是答案 } printf("%d" , ans) ; return 0 ; }
- 
  0@ 2018-02-28 15:22:59#include<iostream> 
 #include<cstdio>
 using namespace std;
 int t[200005],g[200005];//t是桶,t[i]表示值为i的数在集合中两两相加出现了几次,g[i]表示值为i的数是否在集合中,1为在,0为不在
 int n,a[105],ans;
 int main(){
 cin>>n;
 for (int i=1;i<=n;i++){
 cin>>a[i];//读入
 g[a[i]]=1;//在集合中赋值为1
 }
 for (int i=1;i<n;i++){//枚举
 for (int j=i+1;j<=n;j++){
 t[a[i]+a[j]]++;//被加出来了
 }
 }
 for (int i=1;i<=200002;i++){
 if (t[i]>0&&g[i]) ans++;//判断是否满足,满足ans++
 }
 cout<<ans<<endl;
 return 0;
 }
- 
  0@ 2018-02-27 10:19:50import 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.contains(m)){
 set.add(m);
 }
 }
 }
 }
 System.out.println(set.size());
 scanner.close();
 }
 }
信息
- ID
- 1911
- 难度
- 6
- 分类
- (无)
- 标签
- 递交数
- 17156
- 已通过
- 4540
- 通过率
- 26%
- 被复制
- 30
- 上传者