codetest

1、寻找身高相近的小朋友

cpp 复制代码
#include <iostream>
#include <bits/stdc++.h>

using namespace std;

//寻找身高相近的小朋友

//输入,第一行两个整数,分别是小明身高,其他小伙伴个数,第二行是其他小伙伴的身高
//100 10
//95 96 97 98 99 101 102 103 104 105

//输出,和小明身高差绝对值小的前面,差值大的排后面,差值相同个子小的排在前面
//99 101 98 102 97 103 96 104 95 105

int h, n;
struct node{
    int height;
}a[128];
bool cmp(node A, node B){
    if (abs(A.height - h) !=abs(B.height - h)){
        return abs(A.height- h) < abs(B.height - h);
    }
    return A.height < B.height;
}

int main() {
    cin >> h >> n;
    for (int i = 0; i < n; ++i) {
        cin >> a[i].height;
    }
    sort(a, a+n ,cmp);
    for (int i = 0; i <n ; ++i) {
        cout << a[i].height << " ";
    }
    return 0;
}

2、用连续自然数之和来表达整数

cpp 复制代码
#include <iostream>
#include <vector>

using namespace std;

//用连续自然数之和来表达整数
//输入一个整数 9
//输出表达式和表达式个数
//9=9
//9=4+5
//9=2+3+4
//Result:3

bool isContinune(vector<int> v){
    for (int i = v.size() -1; i > 0; --i) {
        if (v[i] != v[i-1] -1)
            return false;
    }
    return true;
}
int sum(vector<int> v)
{
    int sum = 0;
    for (int i : v)
        sum += i;
    return sum;
}
void print(vector<int> v, int n)
{
    cout << n << "=";
    if (v.size() == 1) {
        cout << v[0] << endl;
        return;
    }
    int i;
    for ( i = v.size() - 1; i > 0; --i)
        cout << v[i] << "+";
    cout << v[i] << endl;

}
int main()
{
    int n;
    int sumcount = 0;
    vector<int> v;
    cin >> n;

    for (int i = n; i >=1; --i)
    {
        for (int j = i; j >=1 ; --j) {
            v.push_back(j);
            if (sum(v) == n && isContinune(v)) {
                print(v, n);
                ++sumcount;
                v.clear();
                break;
            }
            if (sum(v) > n) {
                v.clear();
                break;
            }
        }
    }
    cout << "Result:" << sumcount;
}

3、开源项目热榜

cpp 复制代码
#include <bits/stdc++.h>

using namespace std;

//开源项目热榜
//输入第一行,项目个数
//第二行,权重值
//第三行开始,各个项目名字,和关注、收藏、fork、issue、MR的数量
//输出热度值降序排列,热度值相同按名字转成小写字母后字典排序

/*
4
5 6 6 1 2
camila 66 70 46 158 80
victoria 94 76 86 189 211
anthony 29 17 83 21 48
emily 53 97 1 19 218
*/


int n;
int w[5];
struct node{
    string na, na_small;//na_small是全部都是小写字母的项目名称
    int watch, star, fork, issue, mr;
    int sum;
};
node a[128];

bool cmp(node A, node B)//重载的sort中的比较函数
{
//热度值不同的时候,按照热度值排序
    if (A.sum != B.sum)
        return A.sum > B.sum;
//热度值相同的时候,按照字典序排序
    return A.na_small < B.na_small;
}

int main()
{
    cin >> n;
    for (int i = 0; i < 5; i ++ )
        cin >> w[i];
    for (int i = 0; i < n; i ++ )//处理输入
    {
        cin >> a[i].na >> a[i].watch >> a[i].star >> a[i].fork
            >> a[i].issue >> a[i].mr;
        a[i].sum = a[i].watch * w[0] + a[i].star * w[1] +
                   a[i].fork * w[2] + a[i].issue * w[3] + a[i].mr * w[4];//计算热度值
//将项目名称中的大写字母转成小写字母
        for (int j = 0; j < a[i].na.size(); j ++ )
        {
            if (a[i].na[j] >= 'A' && a[i].na[j] <= 'Z')
                a[i].na_small += a[i].na[j] + 32;
            else a[i].na_small += a[i].na[j];
        }
    }

    sort(a , a + n , cmp);//排序
//输出原来可能带大写字母的项目名称
    for (int i = 0; i < n; i ++ )
        cout << a[i].na << endl;

    return 0;
}

4、素数之积

cpp 复制代码
#include <iostream>
#include<cmath>
using namespace std;

//素数之积
//输入一个整数,因数分解,找出是那两个素数的乘积
//成功找到,从小到大输出两个素数,分解失败,输出-1 -1
/*输入15,输出 3 5*/

bool isPrimer(int num) {
    bool res = true;
    for (int i = 2; i <= sqrt(num); i++) {
        if (num % i == 0)
            return false;
    }
    return res;
}
int main() {
    int num;
    cin >> num;
    bool result = false;
    for (int i = 2; i <= sqrt(num); i++) {
        if (num % i == 0) {
            if (isPrimer(num / i)) {
                cout << i << " " << num / i << endl;
                result = true;
                break;
            }
        }
    }
    if (!result)
        cout << -1 << " " << -1 << endl;
    return 0;
}

5、靠谱的车

cpp 复制代码
#include <iostream>
#include <string>
#include <cmath>

using namespace std;

//靠谱的车
//输入一个整数,输出实际产生的费用

// 函数用来计算跳过所有4的实际读数
int actualCost(int n) {
    int result = 0; // 存储实际的读数
    int multiplier = 1; // 数字的位置权重
    while (n > 0) {
        int digit = n % 10; // 获取当前数字的最后一位
        n /= 10; // 移除当前处理的最后一位
        if (digit > 4) {
            digit--; // 如果数字大于4,由于跳过4,所以减1
        }
        result += digit * multiplier; // 根据位置添加到最终结果
        multiplier *= 9; // 调整权重(由于每一位可能的数字现在只有9个:0-3, 5-9)
    }
    return result;
}

int main() {
    int N;
    cin >> N; // 读取输入
    cout << actualCost(N) << endl; // 输出实际费用
    return 0;
}

6、执行时长

cpp 复制代码
#include <iostream>
using namespace std;
//执行时长
//输入三行,最多执行的任务数、任务数组长度、任务数组元素(代表每秒新增的任务数)
//输出执行任务所需时间
/*
3
5
1 2 3 4 5
*/
int main() {
    int n, size;
    cin >> n >> size;
    int a = 0;
    int ans = size;
    int tmp;
    int i = 0;
    while(i < size)
    {
        cin >> tmp;
        a = a + tmp;
        if(a < n)
            a = 0;
        else
            a = a - n;
        i++;
    }
    ans = ans + a/n;
    if(a % n != 0)
        ans ++;
    cout<<ans;
    return 0;
}
相关推荐
子豪-中国机器人14 分钟前
C++ 信息学奥赛总复习题
java·jvm·算法
全干engineer2 小时前
web3-基于贝尔曼福特算法(Bellman-Ford )与 SMT 的 Web3 DeFi 套利策略研究
算法·金融·web3·去中心化·区块链·智能合约
Splendid2 小时前
Geneformer:基于Transformer的基因表达预测深度学习模型
javascript·算法
愿所愿皆可成2 小时前
机器学习之聚类Kmeans算法
算法·机器学习·kmeans·聚类
幻奏岚音2 小时前
统计学(第8版)——假设检验学习笔记(考试用)
笔记·学习·算法
hie988943 小时前
基于matlab策略迭代和值迭代法的动态规划
算法·动态规划
Coovally AI模型快速验证3 小时前
SFTrack:面向警务无人机的自适应多目标跟踪算法——突破小尺度高速运动目标的追踪瓶颈
人工智能·神经网络·算法·yolo·计算机视觉·目标跟踪·无人机
Brduino脑机接口技术答疑3 小时前
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
人工智能·算法·脑机接口·新手入门
真的很上进3 小时前
2025最全TS手写题之partial/Omit/Pick/Exclude/Readonly/Required
java·前端·vue.js·python·算法·react·html5
linweidong3 小时前
GO 基础语法和数据类型面试题及参考答案(下)
算法·后端面试·泛型·go面试·go面经·go求职