问题标题: 酷町堂:5422 A + B = C

1
0
已解决
张恩泽
张恩泽
高级天翼
高级天翼

5422   A + B = C 经验值:800

题目描述 Description

给定 n 个数 ai,以及一个正整数 c ,问有多少对 ai 和 aj,满足 ai + aj = c ,如果没有满足条件的ai与aj,则输出“No”。

输入描述 Input Description

第一行,输入正整数n和c;
接下来n行,输入n个正整数。

输出描述 Output Description

输出n个正整数中两数之和等于c的有多少对;如果不存在两数之和等于c,则输出“No”。

样例输入 Sample Input

5 6 1 2 3 4 5

样例输出 Sample Output

2

数据范围及提示 Data Size & Hint

n<=1000;
ai和aj要互不相同,另外,就算等式ai+aj=c 和 aj+ai=c 都成立,ai与aj也只能算作一对数,例如:虽然等式 1+2=3 和 2+1=3 都成立,但是1和2只能算作一对数字,不能算作两对。

 

//CODE
//#pragma GCC optimize(3)
//#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
using namespace std;
int n, c, a[1005], cnt;
int main() {
//  freopen ("题目名.in", "r", stdin);
//  freopen ("题目名.out", "w", stdout);
    cin >> n >> c;
    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 ++) {
            if (a[i] + a[j] == c) {
                cnt ++;
            }
        }
    }
    cout << cnt;
//  fclose (stdin);
//  fclose (stdout);
    return 0;//好习惯!
}

为什么90分,求各位大佬找错!!


0
0
0
高子健
高子健
新手天翼
新手天翼

如果不存在两数之和等于c,则输出“No”

请仔细阅读题目

只要改一下

bool f=0||f=1;

if (a[i] + a[j] == c) {

 

cnt ++;

f=1||f=0//看你的代码来决定

}

if(f==1||f==0)//看代码           如果f==初值

cou<<"No"

0
阮文涛
阮文涛
新手守护
新手守护

1.最后没有(cnt=0),cout<<-1;

else cout<<cnt;

0
武建豪
武建豪
中级天翼
中级天翼

这个注释就™很有灵性

0
沙宸安
沙宸安
高级启示者
高级启示者

恕我水一句,你的代码真的是人性化。

我要回答