蓝杯四十七

作者: 逍遥_9353 | 来源:发表于2018-02-14 19:59 被阅读22次

算法训练 筛选号码 

时间限制:1.0s  内存限制:512.0MB

提交此题   

问题描述

  有n个人围成一圈,顺序排号(编号为1到n)。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子。从下一个人开始继续报数,直到剩下最后一个人,游戏结束。

  问最后留下的是原来第几号的那位。

  举个例子,8个人围成一圈:

  1 2 3 4 5 6 7 8

  第1次报数之后,3退出,剩下:

  1 2 4 5 6 7 8 (现在从4开始报数)

  第2次报数之后,6退出,剩下:

  1 2 4 5 7 8 (现在从7开始报数)

  第3次报数之后,1退出,剩下:

2 4 5 7 8 (现在从2开始报数)

  第4次报数之后,5退出,剩下:

  2 4 7 8 (现在从7开始报数)

  第5次报数之后,2退出,剩下:

  4 7 8 (现在从4开始报数)

  第6次报数之后,8退出,剩下:

  4 7 (现在从4开始报数)

  最后一次报数之后,4退出,剩下:

  7.

  所以,最后留下来的人编号是7。

输入格式

  一个正整数n,(1<n<10000)

输出格式

  一个正整数,最后留下来的那个人的编号。

样例输入

8

样例输出

7

数据规模和约定

  对于100%的数据,1<n<10000。

#include <stdio.h> 

#define MAXN 10000 

 

int main() 

     

    int a[MAXN]; 

     

    int i, j, n, t, c; 

     

    scanf("%d", &n); 

     

    for(i = 1; i <= n; i ++){ 

        a[i] = i; 

    } 

     

    c = t = n; 

    j = 0; 

    while(t > 1){ 

        c = 0; 

  for(i = 1; i <= t; i ++){ 

            if(++j % 3){ 

                a[++c] = a[i]; 

            } 

        } 

        t = c; 

    } 

     

    printf("%d", a[1]); 

     

    return 0; 

思路分析:

①定义变量:正整数,编号,报数(一维数组) ,循环次数;

②输入正整数;

③for语句循环输入顺序排号;

④进行判断筛选号码;

⑤输出最后留下的是原来第几号的那位。

算法提高 分数统计 

时间限制:1.0s  内存限制:512.0MB

提交此题   

问题描述

  2016.4.5已更新此题,此前的程序需要重新提交。

问题描述

  给定一个百分制成绩T,将其划分为如下五个等级之一:

  90~100为A,80~89为B,70~79为C,60~69为D,0~59为E

  现在给定一个文件inp,文件中包含若干百分制成绩(成绩个数不超过100),请你统计五个等级段的人数,并找出人数最多的那个等级段,按照从大到小的顺序输出该段中所有人成绩(保证人数最多的等级只有一个)。要求输出到指定文件oup中。

输入格式

  若干0~100的正整数,用空格隔开

输出格式

  第一行为5个正整数,分别表示A,B,C,D,E五个等级段的人数

  第二行一个正整数,表示人数最多的等级段中人数

  接下来一行若干个用空格隔开的正整数,表示人数最多的那个等级中所有人的分数,按从大到小的顺序输出。

样例输入

100 80 85 77 55 61 82 90 71 60

样例输出

2 3 2 2 1

3

85 82 80

#include <iostream> 

#include <string.h> 

int num[1005]; 

using namespace std; 

int main() 

    int n,i = 0,sum; 

    int temp[5][1005],dp[5] = {90,80,70,60,0}; 

    memset(temp,0,sizeof(temp)); 

    cin>>sum; 

    for(;i < sum;i++) 

    { 

        cin>>num[i]; 

        for(int j = 0;j < 5;j++) 

        { 

if(num[i] >= dp[j]) 

            { 

                temp[j][++temp[j][0]] = num[i]; 

                break; 

            } 

        } 

    } 

    int maxn = 0,maxl = 0; 

    for(int t = 0;t < 5;t++) 

    { 

        cout<<temp[t][0]<<" "; 

        if(maxn < temp[t][0]) 

        { 

            maxn = temp[t][0]; 

            maxl = t; 

        } 

    } 

cout<<endl<<maxn<<endl; 

    sort(temp[maxl]+1,temp[maxl]+temp[maxl][0]+1); 

    for(int t = temp[maxl][0];t >= 1;t--) 

        cout<<temp[maxl][t]<<" "; 

    return 0; 

思路分析:

① 定义变量:五个等级段的人数,人数最多的等级段中人数,人数最多的那个等级中所有人的分数,(一维数组);

②输入5个等级段的人数;

③找出人数最多的那个等级段;

④从大到小的顺序,输出该段中所有人成绩(保证人数最多的等级只有一个)。

相关文章

  • 蓝杯四十七

    算法训练 筛选号码 时间限制:1.0s 内存限制:512.0MB 提交此题 问题描述 有n个人围成一圈,顺序排...

  • 【魔道/曦澄】蓝宗主与江澄经历了多次生死,情比金坚,却丢失了记忆

    原标题:魔道之浮生情(一百四十七) 蓝曦臣亲自为月缘和金凌倒了杯茶,月缘谢过,拿起来吹了吹,感觉不烫了就抿了一口。...

  • 蓝杯二十

    /*数的读法 问题描述Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万...

  • 蓝杯十八

    /*矩形面积交 问题描述平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对...

  • 蓝杯四十

    算法训练 统计单词个数 时间限制:1.0s 内存限制:256.0MB 问题描述 给出一个长度不超过200...

  • 蓝杯十二

    一、/*分糖果 问题描述有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:每个小朋友都...

  • 蓝杯九

    /*阶乘计算 问题描述 输入一个正整数n,输出n!的值。其中n!=1*2*3*…*n。算法描述n!可能很大,而计算...

  • 蓝杯十三

    一、/*打印下述图案问题描述使用循环结构打印下述图形,打印行数n由用户输入。打印空格时使用"%s"格式,向prin...

  • 蓝杯十五

    /*买不到的题目问题描述小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋...

  • 蓝杯六

    一、/*所有水仙花数 问题描述 打印所有100至999之间的水仙花数。所谓水仙花数是指满足其各位数字立方和为该数字...

网友评论

    本文标题:蓝杯四十七

    本文链接:https://www.haomeiwen.com/subject/gtzetftx.html