首页 > 其他分享 >有没有一捏 约瑟夫环

有没有一捏 约瑟夫环

时间:2023-12-01 14:33:05浏览次数:35  
标签:有没有 二进制 int number 一捏 record flag 约瑟夫 输入

7-5 有没有一捏

题目背景

一个神秘的数字解码器被用来识别和分析城市监控系统中的加密信号。这些信号用二进制代码表示,二进制值代表了不同类型的安全信息,当二进制值的最后一位为0时,代表该信号是安全的,不会造成网络威胁,如果最后一位是1的,则该信号是1,有潜在的网络威胁。作为一名才华横溢的网络工程师,你被委以重任——编写一个程序用于数字解码器以快速识别这些信号,以帮助保护城市免受潜在的网络威胁。

输入格式:

输入一个整数n(1≤n≤2^63−1),代表二进制信号的十进制形式。

输出格式:

如果该信号是安全的,输出一行Safe,否则输出Danger

输入样例:

在这里给出一组输入。例如:

6

输出样例:

在这里给出相应的输出。例如:

Safe

数据规模与约定:

本题共有 10 个测试点。
对于 80% 的数据,保证1≤n≤2^31 − 1。
对于 20% 的数据,保证2^31≤n≤2^63 − 1。

解题思路:

  1.由题可知,题目要求我们根据输入数据的二进制的最后一位来判断该数是否是安全的,因此只需要获取输入数据的二进制的最后一位即可

  2.我们可以知道,获取一个数的二进制的方法是除2取余,得出的余数由下往上即为该数的二进制,因此我们第一次除2取余获取的余数即为该数二进制的最后一位

  3.所以,只需要对读入的数据%2,获取计算的结果,再依据结果为0或为1判断是否Safe

#include<stdio.h>
int main() {
    int n;
    scanf("%d",&n);
    int number = n%2;
    if(number == 0){
        printf("Safe");
    } else{
        printf("Danger");
    }
    return 0;
}

7-7 约瑟夫环

有N个人围成一圈(编号为1~N),从第1号开始进行1、2、3报数,凡报3者就退出,下一个人又从1开始报数……直到最后只剩下一个人时为止。请问此人原来的编号是多少?

输入格式:

在一行中给出1个不超过100的正整数N。

输出格式:

在一行中输出最后剩下那个人的编号。

输入样例:

10

输出样例:

4 1

解题思路:

  1.先根据输入的人数新建一个record[]数组,数组长度为n+1(1-n方便得出结果),将其所有数据初始化为1,用于判断该数据是否被移除

  2.count用来记录所有未被移除的数据个数;flag用于作为获取数据的指针,随着循环的进行往下读取,到数组尾后变为1重新继续读取;number用于记录每个人报的数,当报数为3时进行操作然后将number设置为1

  3.首先根据record[flag]的值进行判断

    (1)为0则不进行操作

    (2)为1则说明该位置还有未退出的人,则进行判断到这个人时报的数为多少,如果为3,即number==3时,将record[flag]=0,并将count-1表示这个人退出,并将报数number置1

    (3)执行完以上操作都要根据flag的长度将flag+1或置1,保证程序不断遍历record数组

  4.循环的退出条件是最后只剩一个人,即count==1,跳出循环后则遍历数组,找出record数组中最后剩下的人(根据0/1判断)

#include<stdio.h>
int main() {
    int n;
    scanf("%d",&n);
    int record[n+1];
    for(int i=1;i<=n;i++){
        record[i] = 1;
    }
    int count = n;
    int flag = 1;
    int number = 1;
    while(count>1){
        if(record[flag]) {
            if (number == 3) {
                record[flag] = 0;
                count--;
                number = 1;
            }else {
                number++;
            }
        }
        if(flag!=n){
            flag++;
        }else{
            flag = 1;
        }
    }
    for(int i=1;i<=n;i++){
        if(record[i]){
            printf("%d",i);
            break;
        }
    }
}

 

标签:有没有,二进制,int,number,一捏,record,flag,约瑟夫,输入
From: https://www.cnblogs.com/lavendery/p/17861014.html

相关文章

  • 7-5 有没有一捏
    7-5有没有一捏目录目录7-5有没有一捏目录题目背景代码思路代码运行结果题目背景一个神秘的数字解码器被用来识别和分析城市监控系统中的加密信号。这些信号用二进制代码表示,二进制值代表了不同类型的安全信息,当二进制值的最后一位为0时,代表该信号是安全的,不会造成网络威胁,如......
  • 约瑟夫(环形链表)
    约瑟夫(环形链表)/***@author缪广亮*@version1.0*/classJoseph{publicstaticvoidmain(String[]args){CircleSingleLinkedListcircleSingleLinkedList=newCircleSingleLinkedList();circleSingleLinkedList.addBoy(5);circ......
  • 软件开发费用是多少?验收时看看有没有这些代码!
    在当今时代,软件开发已经成为企业竞争的关键因素之一,然而,许多企业在面对软件开发时,往往会面临一个问题:软件开发费用是多少?验收时又该如何检查这些代码呢?本文将为你解答这些问题,并分享一些基础的代码知识。一、软件开发费用是多少?首先,我们需要明白软件开发费用的影响因素有很多,包......
  • 算法:约瑟夫环问题
    问题描述:n个人围成一圈,从编号为k的人开始报数,报到m的人出圈,剩下的人继续从1开始报数,报到m的人出圈;如此往复,求最后一个出圈的人 /**@paramarrarray值为range(1,总人数)*@parammint报号到m的人出圈*@paramcurrentint从第current+1个人开始喊1;值为k-1*@return......
  • 有没有好用免费的图片转PDF网站?这7个建议收藏
    1PDF24Tools这个网站支持很多PDF相关的操作,包括:PDF合并、PDF分割、PDF压缩、PDF编辑、PDF签署、PDF转换器、图片转PDF、PDF转图像、从PDF文件中提取图像、用密码保护PDF、移除PDF密码保护、旋转PDF页面、删除PDF页面、提取PDF页面、重新排列PDF页面、网......
  • 怎么查看系统有没有安装工具链?
    要查看系统是否安装了工具链,可以通过以下步骤进行:打开终端(命令行界面)。输入以下命令,并按下回车键:shell复制代码gcc--version如果系统已经安装了GCC(GNUCompilerCollection,GNU编译器套件),则会显示GCC的版本信息。如果未安装,则会提示找不到命令或类似的错误信息。另外,如果需要检查......
  • 怎么查看系统有没有安装工具链?
    要查看系统是否安装了工具链,可以通过以下步骤进行:打开终端(命令行界面)。输入以下命令,并按下回车键:shell复制代码gcc--version如果系统已经安装了GCC(GNUCompilerCollection,GNU编译器套件),则会显示GCC的版本信息。如果未安装,则会提示找不到命令或类似的错误信息。另外,如果需要检查......
  • 怎么查看系统有没有安装工具链?
    要查看系统是否安装了工具链,可以通过以下步骤进行:打开终端(命令行界面)。输入以下命令,并按下回车键:shell复制代码gcc--version如果系统已经安装了GCC(GNUCompilerCollection,GNU编译器套件),则会显示GCC的版本信息。如果未安装,则会提示找不到命令或类似的错误信息。另外,如果需要检查......
  • 首先加载核心模块,不管有没有同名/同目录的情况下,核心模块优先加载.
    在文件/home/somebody/workspace/somemodule.js中第一行引用了一个模块:require(‘othermodule‘),请问require查找模块的顺序是:A./home/somebody/workspace/node_modules/othermodule/index.jsB./home/somebody/workspace/node_modules/othermodule.JsC.COREMODULESnamedo......
  • 算法题:约瑟夫环问题
    原题:N个人围成一圈顺序编号,从1号开始按1、2、3…顺序报数,报p者退出圈外,其余的人再从1、2、3开始报数,报p的人再退出圈外,以此类推。请按退出顺序输出每个退出人的原序号。输入格式:输入只有一行,包括一个整数N(1<=N<=3000)及一个整数p(1<=p<=5000)。输出格式:按退出顺序输出每个......