每日一练2023.12.11—— 猜数字【PTA】

题目链接:L1-056 猜数字 

题目要求:

一群人坐在一起,每人猜一个 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;
}

测试结果:

相关推荐

  1. LeetCode每日题[C++]-数字游戏

    2023-12-11 06:26:02       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-11 06:26:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-11 06:26:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-11 06:26:02       82 阅读
  4. Python语言-面向对象

    2023-12-11 06:26:02       91 阅读

热门阅读

  1. android 13.0 Settings去掉二级三级菜单搜索功能

    2023-12-11 06:26:02       60 阅读
  2. SQLMap进阶使用

    2023-12-11 06:26:02       46 阅读
  3. prototype、__proto__、constructor、原型、原型链

    2023-12-11 06:26:02       67 阅读
  4. Kubernetes实战(十)-升级k8s集群

    2023-12-11 06:26:02       46 阅读
  5. 第三十章 控制到 XML 模式的映射 - Array of Classname

    2023-12-11 06:26:02       54 阅读
  6. UEFI 学习笔记

    2023-12-11 06:26:02       56 阅读
  7. SQLMap介绍

    2023-12-11 06:26:02       45 阅读
  8. 12.视图

    12.视图

    2023-12-11 06:26:02      43 阅读