1021 个位数统计 && 1013 数素数 && L2-015 互评成绩 && L1-076 降价提醒机器人

文章包含三道编程题,分别涉及统计字符串中数字出现次数,输出指定范围内的素数,以及实现评分系统去除最高分和最低分计算平均分。另外一道题目要求监控商品价格,当低于用户设定值时发送提醒。
摘要由CSDN通过智能技术生成

在这里插入图片描述

// 题目链接 https://pintia.cn/problem-sets/994805260223102976/exam/problems/994805300404535296
#include<bits/stdc++.h>
using namespace std;

int main(){
    int index[10]={0};
    char a[1005];
    scanf("%s",a);
    for(int i=0;i<strlen(a);i++){
        index[int(a[i])-48] += 1;
    }
    for(int i=0;i<10;i++){
        if(index[i]!=0){
            printf("%d:%d\n",i,index[i]);
        }
    }
    return 0;
}

-------------------------------------------------------------------------

令 P i表示第 i 个素数。现任给两个正整数 M≤N≤10 4 ,请输出 P M 到 P N的所有素数。

输入格式:
输入在一行中给出 M 和 N,其间以空格分隔。

输出格式:
输出从 P M 到 P N 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。

输入样例:
5 27
输出样例:
11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103

// 题目连接  https://pintia.cn/problem-sets/994805260223102976/exam/problems/994805309963354112
#include<bits/stdc++.h>

using namespace std;

bool isSu(int x) {
    if (x == 1) return false;
    if (x == 2 || x == 3) return true;
    // 注意素数题  都可以小于sqrt(x)  要不然后超时
    for (int i = 2; i <= sqrt(x); i++) {
        if (x % i == 0) {
            return false;
        }
    }
    return true;
}

int main() {
    int m, n, sum;
    scanf("%d %d", &m, &n);
    sum = n - m + 1; // 总共有多少素数
    int count = 0; //素数总数
    int k = 0; // 控制输出格式
    for (int i = 1; i < 1000000; i++) {
        if (isSu(i)) {
            count++;
            if (count >= m && count <= n) {
                printf("%d", i);
                k++;
                if (k % 10 != 0 && k != sum) {
                    printf(" ");
                } else if (k % 10 == 0) {
                    printf("\n");
                }
            }
        }
        //退出循环 必须得加 要不然超时
        if(k == sum){ 
            break;
        }
    }
    return 0;
}

-----------------------------------------------------------------------

学生互评作业的简单规则是这样定的:每个人的作业会被k个同学评审,得到k个成绩。系统需要去掉一个最高分和一个最低分,将剩下的分数取平均,就得到这个学生的最后成绩。本题就要求你编写这个互评系统的算分模块。

输入格式:
输入第一行给出3个正整数N(3 < N ≤10 4 ,学生总数)、k(3 ≤ k ≤ 10,每份作业的评审数)、M(≤ 20,需要输出的学生数)。随后N行,每行给出一份作业得到的k个评审成绩(在区间[0, 100]内),其间以空格分隔。

输出格式:
按非递减顺序输出最后得分最高的M个成绩,保留小数点后3位。分数间有1个空格,行首尾不得有多余空格。

输入样例:
6 5 3
88 90 85 99 60
67 60 80 76 70
90 93 96 99 99
78 65 77 70 72
88 88 88 88 88
55 55 55 55 55
输出样例:
87.667 88.000 96.000

// 题目链接  https://pintia.cn/problem-sets/994805046380707840/exam/problems/994805062432309248
#include<bits/stdc++.h>
using namespace std;

int main(){
    int n,k,m;
    scanf("%d %d %d",&n,&k,&m);
    float score[n];
    float sum; //去掉首尾后的总和
    float avg;
    int paixu[k];
    for(int i=0;i<n;i++){
        for(int j=0;j<k;j++){
            scanf("%d",&paixu[j]);
        }
        sort(paixu,paixu+k);
        sum = 0;
        for(int l=1;l<k-1;l++){
            sum += paixu[l];
        }
        avg = sum/(k-2);
        score[i] = avg;
    }
    sort(score,score+n);
    int s = 0; // 控制输出格式
    for(int i=n-m;i<n;i++){
        printf("%.3f",score[i]);
        s++;
        if(s!=m){
            printf(" ");
        }
    }
    return 0;
}

----------------------------------------------------------------------------

小 T 想买一个玩具很久了,但价格有些高,他打算等便宜些再买。但天天盯着购物网站很麻烦,请你帮小 T 写一个降价提醒机器人,当玩具的当前价格比他设定的价格便宜时发出提醒。

输入格式:
输入第一行是两个正整数 N 和 M (1≤N≤100,0≤M≤1000),表示有 N 条价格记录,小 T 设置的价格为 M。

接下来 N 行,每行有一个实数 P i(−1000.0<P i <1000.0),表示一条价格记录。

输出格式:
对每一条比设定价格 M 便宜的价格记录 P,在一行中输出 On Sale! P,其中 P 输出到小数点后 1 位。

输入样例:
4 99
98.0
97.0
100.2
98.9
输出样例:
On Sale! 98.0
On Sale! 97.0
On Sale! 98.9

// 题目链接  https://pintia.cn/problem-sets/994805046380707840/exam/problems/1386335159927652355
#include<bits/stdc++.h>
using namespace std;

int main(){
    int n,m;
    float num;
    scanf("%d %d",&n,&m);
    for(int i=0;i<n;i++)
    {
        scanf("%f",&num);
        // 整型 能跟 浮点数 比较大小???
        if(num < m){
            printf("On Sale! %.1f\n",num);
        }
    }
    
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值