【PTA】L1-056 猜数字 (C++)

简介: 【PTA】L1-056 猜数字 (C++)

题目要求:

一群人坐在一起,每人猜一个 100 以内的数,谁的数字最接近大家平均数的一半就赢。本题就要求你找出其中的赢家。

输入格式:

输入在第一行给出一个正整数N(≤104)。随后 N 行,每行给出一个玩家的名字(由不超过8个英文字母组成的字符串)和其猜的正整数(≤ 100)。

输出格式:

在一行中顺序输出:大家平均数的一半(只输出整数部分)、赢家的名字,其间以空格分隔。题目保证赢家是唯一的。

输入样例:

7
Bob 35
Amy 28
James 98
Alice 11
Jack 45
Smith 33
Chris 62

输出样例:

22 Amy

思路:

1.按题目要求先定义一个数组s进行存放字符串,也就是名字,一个数组x用来存放报的数

2.循环遍历将报的数累加到sum里面,求其平均数存放在t里

3.再次循环遍历将每个数与平均数的一半的差值求出来,并且找到最小差值的那个数

4.再次循环遍历找到最小差值的下标,最后将平均值的一半和最小差值的名字打印出来

代码:

#include <bits/stdc++.h>
 
using namespace std;
 
#define N 10000
int main()
{
    int n;
    cin >> n;
    string s[N];
    int x[N];
    int sum = 0;
    for(int i = 0; i < n; i ++)
    {
        cin >> s[i] >> x[i];
        sum += x[i];
        
    }
    int t = sum / n / 2;
    int z;
    int m = N;
    for(int i = 0; i < n; i ++)
    {
        if(x[i] - t > 0)
            z = x[i] - t;
        else
            z = t - x[i];
        m = min(z, m);
    }
    int idx;
    for(int i = 0; i < n; i ++)
    {
        if(x[i] - t == m || t - x[i] == m)
            idx = i;
    }
    cout << t << " " << s[idx] << endl;
    return 0;
}

测试结果:


目录
相关文章
|
2月前
|
C++
【PTA】L1-016 验证身份(C++)
【PTA】L1-016 验证身份(C++)
54 0
【PTA】L1-016 验证身份(C++)
|
23天前
|
存储 C++
【PTA】L1-039 古风排版(C++)
【PTA】L1-039 古风排版(C++)
10 1
|
2月前
|
Java C++
部落(pta)(并查集) Java以及C++
部落(pta)(并查集) Java以及C++
23 2
|
23天前
|
存储 人工智能 C++
【PTA】L1-064 估值一亿的AI核心代码(详C++)
【PTA】L1-064 估值一亿的AI核心代码(详C++)
15 1
|
23天前
|
存储 C++ 索引
【PTA】L1-059 敲笨钟(C++)
【PTA】L1-059 敲笨钟(C++)
12 1
|
23天前
|
存储 人工智能 C++
【PTA】L1-093 猜帽子游戏(C++)
【PTA】L1-093 猜帽子游戏(C++)
18 1
|
23天前
|
C++
【PTA】L1-046 整除光棍(C++)
【PTA】L1-046 整除光棍(C++)
11 1
|
23天前
|
存储 C++
【PTA】L1-043 阅览室(C++)
【PTA】L1-043 阅览室(C++)
13 1
|
23天前
|
存储 C++
【PTA】​L1-034 点赞(C++)
【PTA】​L1-034 点赞(C++)
9 0
|
2月前
|
C++
C++循环结构实现的猜数字游戏
C++循环结构实现的猜数字游戏
81 1