7-3 数字加密

news2024/9/23 5:26:35

 

分数 15

全屏浏览题目

切换布局

作者 陈建海

单位 浙江大学

输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将千位和十位上的数字互换,百位和个位上的数字互换,组成加密后的新四位数。例如输入1257,经过加9取余后得到新数字0146,再经过两次换位后得到4601。

输入格式:

输入在一行中给出一个四位的整数x,即要求被加密的数。

输出格式:

在一行中按照格式“The encrypted number is V”输出加密后得到的新数V。

输入样例:

1257

输出样例:

The encrypted number is 4601

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

我的答案:

分析过程:

  1. 解析数字的每一位: 要操作一个数字的每一位,最简单的方法是将数字转换为字符串或字符数组。但在这里,我们可以使用模除操作和整除操作来提取和设置每一位数字。

  2. 加密操作: 题目的要求是为每一位加上9然后模10,这是一个简单的加法和模除操作。

  3. 位交换: 对于四位数,交换千位和十位,以及百位和个位。这一步可以在解析每一位数字后立即进行,也可以在所有位都完成加密后进行。

解题过程:

C语言:

#include <stdio.h>

int main() {
    int x;
    scanf("%d", &x);

    // 提取每一位数字
    int a = x / 1000;        // 千位
    int b = (x % 1000) / 100; // 百位
    int c = (x % 100) / 10;   // 十位
    int d = x % 10;           // 个位

    // 加密操作
    a = (a + 9) % 10;
    b = (b + 9) % 10;
    c = (c + 9) % 10;
    d = (d + 9) % 10;

    // 输出结果
    printf("The encrypted number is %d%d%d%d\n", c, d, a, b);
    return 0;
}

C++实现:

#include <iostream>
using namespace std;

int main() {
    int x;
    cin >> x;

    // 提取每一位数字
    int a = x / 1000;        // 千位
    int b = (x % 1000) / 100; // 百位
    int c = (x % 100) / 10;   // 十位
    int d = x % 10;           // 个位

    // 加密操作
    a = (a + 9) % 10;
    b = (b + 9) % 10;
    c = (c + 9) % 10;
    d = (d + 9) % 10;

    // 输出结果
    cout << "The encrypted number is " << c << d << a << b << endl;
    return 0;
}

这种加密方法是简单的数字变换,主要用于教学和练习,而不是真正的安全应用。

总结:

从这道题目中,我们能够学习到以下几点:

1. **数字的位操作**:题目要求对四位数的各个数字进行操作。这需要我们理解如何将整数分解成其组成的各个位数(例如,使用取模和整除操作),以及如何将这些位数组合回去。

2. **模运算的应用**:题目中的`(a[i]+9)%10`操作就是一个典型的模运算应用,可以保证加密后的数字仍然在0-9的范围内。

3. **数组的使用**:在处理多个类似的元素时,如本题中的四位数字,使用数组可以更方便地管理和操作它们。

4. **简单的算法设计**:虽然本题的算法并不复杂,但它提供了一个对如何设计和实现算法的实践机会。

5. **编码风格和清晰度**:比较不同的解决方案可以让我们理解编码风格和可读性的重要性。选择合适的变量名、添加有意义的注释以及保持代码结构的清晰度都是值得注意的重要因素。

6. **细节的重要性**:在处理如何输出四位数字这样的细节时,需要考虑到所有的情况,确保输出始终是四位数字。

7. **问题分析**:这个问题要求从原始的问题描述中提取关键信息并将其转化为算法。这是编程中非常重要的一步,需要对问题有深入的理解和分析。

8. **测试和验证**:一旦完成编码,测试是确保代码正确性的关键。尝试不同的输入,特别是可能的边界情况,可以确保你的解决方案是健壮和准确的。

总的来说,这道题目提供了一个数字处理、算法设计和编程实践的好机会,使我们能够在实际应用中巩固这些基本概念。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/901373.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue-element-admin新增view后点击侧边栏加载慢问题

按照官网文档新增view 新增之后点击显示一直在加载中 解决方案&#xff1a;删除script中这段代码

【自创】关于前端js的“嵌套地狱”的遍历算法

欢迎大家关注我的CSDN账号 欢迎大家关注我的哔哩哔哩账号&#xff1a;卢淼儿的个人空间-卢淼儿个人主页-哔哩哔哩视频 此saas系统我会在9月2号之前&#xff0c;在csdn及哔哩哔哩上发布成套系列教学视频。敬请期待&#xff01;&#xff01;&#xff01; 首先看图 这是我们要解…

<数据结构与算法>二叉树堆的实现

目录 前言 一、树的概念及结构 1 树的概念 2 树的相关概念 二、二叉树的概念及结构 1.二叉树的概念 2. 特殊的二叉树 3. 二叉树的性质 4.二叉树的存储结构 三、二叉树的顺序结构及实现 1.堆的性质 2.堆的插入 3.堆的实现 堆的结构体 HeapInit 初始化 HeapPush 插入 HeapPop 删…

攻防世界-warmup

原题解题思路 只有一张图片&#xff0c;就查看源代码&#xff0c;有一个source.php。 查看source.php&#xff0c;白名单中还有一个hint.php。 hint.php告诉我们flag的位置ffffllllaaaagggg 但是直接跳转是没用的&#xff0c;构造payload。 http://61.147.171.105:55725/sourc…

Android12之com.android.media.swcodec无法生成apex问题(一百六十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

excel中有哪些通配符、excel配置问题,数学函数篇1之sum系列

学习excel前需要明确的是事&#xff1a;   在学习excel函数之前&#xff0c;大家需要明确一件事&#xff0c;excel现在设计到了一些新函数&#xff0c;这些新函数只能存在于office365、office2019及更 新版本之中&#xff0c;所以建议大家在学习时安装较新的版本&#xff0c;…

Qt与电脑管家3

1.ui页面设计技巧 最外面的widget&#xff1a; 上下左右的margin都置相同的值 这里有4个widget&#xff0c;做好一个后&#xff0c;后面3个可以直接复制.ui文件&#xff0c;然后进行微调即可。 2.现阶段实现的效果&#xff1a; 3.程序结构&#xff1a; btn1--->btn btn1---…

基于51单片机直流电机转速数码管显示控制系统

一、系统方案 本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。本文中采用了三极管组成了PWM信号的驱动系统&#xff0c;并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节&#xff0c;从而控制其输入信号波形等…

python、numpy、pytorch中的浅拷贝和深拷贝

1、Python中的浅拷贝和深拷贝 import copya [1, 2, 3, 4, [11, 22, 33, [111, 222]]] b a c a.copy() d copy.deepcopy(a)print(before modify\r\n a\r\n, a, \r\n,b a\r\n, b, \r\n,c a.copy()\r\n, c, \r\n,d copy.deepcopy(a)\r\n, d, \r\n)before modify a [1, 2…

机器人制作开源方案 | 送餐机器人

作者&#xff1a;赖志彩、曹柳洲、王恩开、李雪儿、杨玉凯 单位&#xff1a;华北科技学院 指导老师&#xff1a;张伟杰、罗建国 一、作品简介 1. 场景调研 1.1项目目的 近年来&#xff0c;全国多地疫情频发&#xff0c;且其传染性极高&#xff0c;食品接触是传播途径之一。…

Redis之List类型解读

目录 List简介 数据结构 常见命令 概述 ​LPUSH key value1 [value2] ​ LPUSHX key value LINDEX key index LLEN key LPOP key LRANGE key start stop List简介 列表list是一个单键多值的 Redis 列表是简单的字符串列表&#xff0c;按照插入顺序排序。你可以添加…

k8s 常见面试题

前段时间在这个视频中分享了 https://github.com/bregman-arie/devops-exercises 这个知识仓库。 这次继续分享里面的内容&#xff0c;本次主要以 k8s 相关的问题为主。 k8s 是什么&#xff0c;为什么企业选择使用它 k8s 是一个开源应用&#xff0c;给用户提供了管理、部署、扩…

Python将网络文件下载到本地

Python将网络文件下载到本地 前言相关介绍Python将网络文件下载到本地 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容&#xff0c;可点击进入Python日常小操作专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看基于DETR的人脸伪…

Kubernetes 安全机制 认证 授权 准入控制

客户端应用若想发送请求到 apiserver 操作管理K8S资源对象&#xff0c;需要先通过三关安全验证 认证&#xff08;Authentication&#xff09;鉴权&#xff08;Authorization&#xff09;准入控制&#xff08;Admission Control&#xff09; Kubernetes 作为一个分布式集群的管理…

FreeCAD的傻瓜式初级使用教程

起因&#xff1a;自己想DIY一套线性手刹和序列档&#xff0c;以便和我之前的freejoy控制器相连接应用&#xff0c;需要自己制图和在某宝找代加工的商家&#xff0c;但我又不想安装体积巨大的AutoCAD&#xff0c;所以找了以下开源、免费的解决方案&#xff0c;所以就有了这篇文章…

这是真的“技术驱动”的公司吗?

“ 软件交付团队的DevOps能力&#xff0c;恰恰是技术能力的最好体现。” 01 — “我们是技术驱动的公司” 跟我们合作的软件供应商&#xff0c;每次发生软件变更或升级就一地鸡毛&#xff0c;而且经过屡次沟通&#xff0c;都没有什么本质改善。 当我们跟他们的高层投诉时&#…

JVM面试题-1

1、什么是JVM内存结构&#xff1f; jvm将虚拟机分为5大区域&#xff0c;程序计数器、虚拟机栈、本地方法栈、java堆、方法区&#xff1b; 程序计数器&#xff1a;线程私有的&#xff0c;是一块很小的内存空间&#xff0c;作为当前线程的行号指示器&#xff0c;用于记录当前虚拟…

数据结构:队列Queue详解

文章目录 一、队列的概念和特点二、队列的使用三、队列的简单实现四、循环队列 一、队列的概念和特点 队列:只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表。进行插入操作的一端称为队尾&#xff0c;删除操作的一端称队头。 入队列&#xff…

使用Nginx调用网关,然后网关调用其他微服务

问题前提&#xff1a;目前我的项目是已经搭建了网关根据访问路径路由到微服务&#xff0c;然后现在我使用了Nginx将静态资源都放在了Nginx中&#xff0c;然后我后端定义了一个接口访问一个html页面&#xff0c;但是html页面要用到静态资源&#xff0c;这个静态资源在我的后端是…

windows服务器下java程序健康检测及假死崩溃后自动重启应用、开机自动启动

前两天由于项目需要&#xff0c;一个windows上的批处理任务&#xff08;kitchen.bat&#xff09;&#xff0c;需要接到mq的消息通知后执行&#xff0c;为了快速实现这里我们通过springboot写了一个jar程序&#xff0c;用于接收mq的消息&#xff0c;并调用bat文件。 本程序需要实…