蓝桥杯专题-真题版含答案-【罗马数字转十进制】【身份证校验】【四方定理】【Excel地址转换】

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总
游戏脚本-辅助自动化Android控件全解手册再战Android系列
Scratch编程案例软考全系列Unity3D学习专栏
蓝桥系列ChatGPT和AIGC

👉关于作者

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,获取更多支持,交流让学习不再孤单

CSDN-芝麻粒儿

👉实践过程

😜罗马数字转十进制

古罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候,
现在看起来简直不能忍受,所以在现代很少使用了。之所以这样,不是因为发明表示法的人的智力的问题,
而是因为一个宗教的原因,当时的宗教禁止在数字中出现0的概念!
罗马数字的表示主要依赖以下几个基本符号:
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
这里,我们只介绍一下1000以内的数字的表示法。
单个符号重复多少次,就表示多少倍。最多重复3次。
比如:CCC表示300 XX表示20, 但150并不用LLL表示,这个规则仅适用于I X C M。
如果相邻级别的大单位在右,小单位在左,表示大单位中扣除小单位。
比如:IX表示9 IV表示4 XL表示40 更多的示例参见下表,你找到规律了吗?
I,1
II,2
III,3
IV,4
V,5
VI,6
VII,7
VIII,8
IX,9

X,10
XI,11
XII,12
XIII,13
XIV,14
XV,15
XVI,16
XVII,17
XVIII,18
XIX,19
XX,20
XXI,21
XXII,22
XXIX,29
XXX,30
XXXIV,34
XXXV,35
XXXIX,39
XL,40
L,50
LI,51
LV,55
LX,60
LXV,65
LXXX,80
XC,90
XCIII,93
XCV,95
XCVIII,98
XCIX,99

C,100
CC,200
CCC,300
CD,400
D,500
DC,600
DCC,700
DCCC,800
CM,900
CMXCIX,999
本题目的要求是:请编写程序,由用户输入若干个罗马数字串,程序输出对应的十进制表示。
输入格式是:第一行是整数n,表示接下来有n个罗马数字(n<100)。
以后每行一个罗马数字。 罗马数字大小不超过999。
要求程序输出n行,就是罗马数字对应的十进制数据。
例如,用户输入:
3
LXXX
XCIII
DCCII
则程序应该输出:
80
93
702

import java.util.Scanner;  
  
public class 罗马数字转十进制 {  
    public static int getNum(char c){  
        switch(c){  
        case 'I': return 1;  
        case 'V': return 5;  
        case 'X': return 10;  
        case 'L': return 50;  
        case 'C': return 100;  
        case 'D': return 500;  
        case 'M': return 1000;  
        }  
        return 0;  
    }  
    public static int format(String s){  
        int sum = 0;    // 总和   
        for(int i=0;i<s.length();i++){  
            int a,b;    // 取得两个相邻的两个值   
            a = getNum(s.charAt(i));  
            if(i+1<s.length()){  
                b = getNum(s.charAt(i+1));  
            }else{  
                b = 0;  
            }  
            if(a<b){ // 对比两个值   
                sum += b-a; // 前小后大时,sum=大-小   
                i++;    // 这里的i++和(for里的i++) i 会后移两位 ,再次进行   
            }else{  
                // 前大后小,或者相等时, sum = 前大元素  , 上边的(for里的i++) i 会后移一位   
                sum += a;  
            }  
        }  
        return sum;  
    }  
    public static void main(String[] args){  
        Scanner scan = new Scanner(System.in);  
        System.out.println("输入整数n,表示接下来有n个罗马数字(n<100)");  
        int n = scan.nextInt();  
        String[] s = new String[n];  
        scan.nextLine();  
        for(int i=0;i<n;i++){    // 输入数据   
            s[i] = scan.nextLine();  
        }  
        for(int i=0;i<s.length;i++){ // 格式化并输出   
            System.out.println(format(s[i]));  
        }  
    }  
}

😜身份证校验

如果让你设计个程序,用什么变量保存身份证号码呢?长整数可以吗?不可以!
因为有人的身份证最后一位是"X"
实际上,除了最后一位的X,不会出现其它字母!
身份证号码18位 = 17位 + 校验码
校验码的计算过程:
例如:身份证前17位 = ABCDEFGHIJKLMNOPQ
A~Q 每位数字乘以权值求和(每位数字和它对应的“权”相乘后累加)
17位对应的权值分别是:
7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
求出的总和再对11求模
然后按下表映射:
余数 0 1 2 3 4 5 6 7 8 9 10
校验码: 1 0 X 9 8 7 6 5 4 3 2
下面的代码实现了校验过程,输入串为身份证前17位,打印出校验码。

import java.util.Scanner;  
  
public class 身份证校验 {  
    public static char verifyCode(char[] s){  
        int weight[] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};  
        char map[] = {'1','0','X','9','8','7','6','5','4','3','2'};  
  
        int sum = 0;  
        for(int i=0; i<17; i++){  
            sum += (s[i]-'0') * weight[i];  // 填空   
        }  
        return map[sum%11];  // 填空   
    }  
    public static void main(String[] args) {  
        Scanner scan = new Scanner(System.in);  
        System.out.println("输入\" 17位   \"数字(通过身份证前17位,得到最后一位校验码)");  
        String s = scan.nextLine();  
        char[] c = s.toCharArray();  
        System.out.println(verifyCode(c));  
    }  
}  

运行结果:
输入" 17位   "数字(通过身份证前17,得到最后一位校验码)  
41104219891216164  
9

😜四方定理

数论中有著名的四方定理:所有自然数至多只要用四个数的平方和就可以表示。
我们可以通过计算机验证其在有限范围的正确性。
对于大数,简单的循环嵌套是不适宜的。下面的代码给出了一种分解方案。

import java.util.Scanner;  
  
public class 四方定理 {  
    public static int f(int n, int a[], int idx) {  
        if (n==0) // 填空1   
            return 1;  
        if (idx == 4)  
            return 0;  
  
        for (int i = (int) Math.sqrt(n); i >= 1; i--) {  
            a[idx] = i;  
  
            if (f(n-i*i, a, idx+1) == 1) // 填空2   
                return 1;  
        }  
        return 0;  
    }  
    public static void main(String[] args) {  
        Scanner scan = new Scanner(System.in);  
        for (;;) {  
            int number;  
            System.out.printf("输入整数(1~10亿):");  
            number = scan.nextInt();  
            int a[] = { 0, 0, 0, 0 };  
            int r = f(number, a, 0);  
            System.out.printf("%s: %d %d %d %d\n", r==1?"有结果":"无结果", a[0], a[1], a[2], a[3]);  
        }  
    }  
} 
运行结果:
输入整数(1~10亿)234  
有结果: 15 3 0 0  
输入整数(1~10亿)4  
有结果: 2 0 0 0  
输入整数(1~10亿)0  
有结果: 0 0 0 0  
输入整数(1~10亿)-1  
无结果: 0 0 0 0  
输入整数(1~10亿)

😜Excel地址转换

Excel是最常用的办公软件。每个单元格都有唯一的地址表示。比如:第12行第4列表示为:“D12”,第5行第255列表示为“IU5”(26进制)。
事实上,Excel提供了两种地址表示方法,还有一种表示法叫做RC格式地址。
第12行第4列表示为:“R12C4”,第5行第255列表示为“R5C255”。
你的任务是:编写程序,实现从RC地址格式到常规地址格式的转换。
【输入、输出格式要求】
用户先输入一个整数n(n<100),表示接下来有n行输入数据。
接着输入的n行数据是RC格式的Excel单元格地址表示法。
程序则输出n行数据,每行是转换后的常规地址表示法。
例如:用户输入:
2
R12C4
R5C255
则程序应该输出:
D12
IU5

package Question1_9;
import java.util.Scanner;
import java.util.Stack;
import java.util.Vector;
public class Question4 {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		int n=scanner.nextInt();
		scanner.nextLine();  //必须加上的,不然会导致输入不准确!
		while (n>0) {
			String string=scanner.nextLine();
			String strings[]=string.split("C");
			strings[0]=strings[0].substring(1, strings[0].length());
			int hangshu=Integer.parseInt(strings[0]),lieshu=Integer.parseInt(strings[1]);//获取行数和列数
			/*
			 * 对列数进行变换
			 */
			Stack<Character>stack=new Stack<Character>();
			while(lieshu>0){
				if(lieshu%26==0){
					stack.push('Z');
					lieshu=lieshu/26-1;
				}else {
					stack.push((char)('A'-1+lieshu%26));
					lieshu=lieshu/26;
				}
			}
			while (!stack.empty()) {
				System.out.print(stack.pop());
			}
			System.out.println(hangshu);
			n--;
		}
	}
}
运行结果:
输入一个整数n(n<1002
R12C4
R5C255
D12
IU5

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
空名先生

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB2022安装下载教程

安装包需从夸克网盘自取&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/373ffc9213a1 提取码&#xff1a;N7PW 1.将安装包解压 2.以管理员的身份运行文件夹中的setup文件 3.点击高级选项--->我有文件安装密钥 4. 选择【是】&#xff0c;进入下一步 5.输入密钥 0532…

CCD相机为什么需要积分球均匀光源

积分球内腔是一个具备高漫反射特性的收光球&#xff0c;其内部中空、内球面均匀地涂有漫反射材料&#xff0c;具有匀光与混光的作用&#xff0c;因此常常被用来做收光的均光球。由于光源性能等因素的影响&#xff0c;可能导致出射光线带偏振方向、出光不均匀&#xff0c;使用积…

游戏、算法竞赛与退役(流水账版)

写在前面 不出意外的话&#xff0c;这东西本该咕到翻年之后再发的&#xff0c;但好像催稿催的有点厉害&#xff0c;于是就找个机会把他写了&#xff08;笑&#xff09; 最初是只想写个算法竞赛退役记的&#xff0c;后面发觉写起来就有点收不住&#xff0c;算法竞赛牵扯到太多…

基于YOLOv8的自定义数据姿势估计

在不断发展的计算机视觉领域中&#xff0c;姿势估计凭借其重要的创新而脱颖而出&#xff0c;彻底改变了我们理解和与视觉数据交互的方式。Ultralytics YOLOv8 处于这一转变的前沿&#xff0c;提供了一种强大的工具&#xff0c;捕捉图像中物体方向和运动的微妙之处。 传统上&…

JDK8安装教程分享

&#x1f9cb;&#x1f9cb;今天&#xff0c;在博客社区看到一篇非常好的&#xff0c;关于JDK8的安装教程&#xff0c;亲试有用&#xff0c;现分享给大家。。。 JDK8安装

Redis-对象

参考资料 极客时间Redis&#xff08;亚风&#xff09; Redis对象 String • 基本编码⽅式是RAW&#xff0c;基于简单动态字符串&#xff08;SDS&#xff09;实现&#xff0c;存储上限为512mb。 • 如果存储的SDS⻓度⼩于44字节&#xff0c;则会采⽤EMBSTR编码&#xff0c;此…

线性代数(一)

1.标量&#xff1a;标量由只有⼀个元素的张量表⽰。 x np.array(3.0) y np.array(2.0) x y, x * y, x / y, x ** y (array(5.), array(6.), array(1.5), array(9.))2.向量&#xff1a;向量可以被视为标量值组成的列表&#xff0c;列向量是向量的默认⽅向。 x np.arange(4…

MyBatis原理解读

我们项目中多用MyBatis进行数据库的读写,开源的MyBatis-Plus框架对其进行了增强,使用上更加简单,我们之前的很多项目也是直接用的MyBatis-Plus。 数据库操作的时候,简单的单表读写,我们可以直接在方法里链式组装SQL,复杂的SQL或涉及多表联合join的,需要在xml手写SQL语句…

RabbitMQ不公平分发问题分析及问题解决

1.不公平分发 1.1 不公平分发策略是什么&#xff1f; 在 RabbitMQ 中&#xff0c;不公平分发&#xff08;Unfair Dispatch&#xff09;是指当多个消费者&#xff08;Consumers&#xff09;同时订阅同一个队列&#xff08;Queue&#xff09;时&#xff0c;消息的分发机制是不公…

网上下载的python如何运行,python可以下载到d盘吗

本篇文章给大家谈谈如何在python官网上下载python&#xff0c;以及python可以在手机上下载吗&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 从Python官网下载Python的步骤 如果你是想要学习Python编程的初学者&#xff0c;那么第一步就是要从官方网站下载Py…

uniGUI之MASK遮罩

在页面进行后台数据库操作的时候&#xff0c;不想 用户再进行 页面上的 其他操作&#xff0c;这时候就要 将页面 遮罩。例如UniDBGrid有LoadMask属性。 1]使用ScreenMask函数 2]JS调用 3]一个控件控制遮罩另一个控件(如Button遮罩UniDBGrid) //很简单&#xff0c;本例子就是告…

Android14创建Pixel6 Pro模拟器(一百七十)

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

Vue3项目中集成mars3D简单三部曲

Vue3项目中集成mars3D简单三部曲 这里是参考网址&#xff0c;大佬可以点击一件跳转 1.安装依赖 npm install vite-plugin-mars3d --save-dev2.修改 vite.config.ts 配置文件 import { defineConfig } from vite; import { mars3dPlugin } from vite-plugin-mars3d;export d…

C++ Qt开发:自定义Dialog对话框组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍自定义Dialog组件的常用方法及灵活运用。 在…

Stable-Diffusion|从图片反推prompt的工具:Tagger(五)

stable-diffusion-webui-wd14-tagger 前面几篇&#xff1a; Stable-Diffusion|window10安装GPU版本的 Stable-Diffusion-WebUI遇到的一些问题&#xff08;一&#xff09; 【Stable-Diffusion|入门怎么下载与使用civitai网站的模型&#xff08;二&#xff09;】 Stable-Diffusi…

QQ邮箱发送工具类的实现

我们在日常开发中&#xff0c;需要实现一个对邮箱的发送&#xff0c;今天就实现邮箱的发送工具类&#xff0c;只需要一些注册邮箱之后的配置即可&#xff0c;我这边使用的是qq邮箱 0.加上依赖 <!--邮箱--><dependency><groupId>org.springframework.boot&l…

DevOps常用工具全家桶,实现高效运维和交付

专栏集锦&#xff0c;大佬们可以收藏以备不时之需&#xff1a; Spring Cloud 专栏&#xff1a;http://t.csdnimg.cn/WDmJ9 Python 专栏&#xff1a;http://t.csdnimg.cn/hMwPR Redis 专栏&#xff1a;http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏&#xff1a;http://t.csdni…

Linux:进程地址空间

目录 1.程序地址空间 2.进程地址空间 1.程序地址空间 我们在讲C/C语言的时候&#xff0c;32位平台下&#xff0c;我们见过这样的空间布局图 我们来验证一下这张图的正确性&#xff1a; int un_gval;int init_gval100;int main(int argc, char* argv[],char* env[]){//代码…

C语言之变量的存储方式和生存周期

一、变量的存储方式 C语言变量的存储有两种方式&#xff1a;静态存储方式和动态存储方式&#xff0c;相应的生产期也有两种&#xff1a;静态生存期和自动生存期。 ①静态存储方式&#xff1a;在程序运行前为变量内存分配内存&#xff0c;在程序结束后回收变量的内存。&#x…

java-sec-code中重定向

重定向 状态码3xx 存在问题的代码段 GetMapping("/redirect") public String redirect(RequestParam("url") String url) {return "redirect:" url; }用户访问/redirect路径时&#xff0c;redirect方法会获取web请求中的url参数内容&#xff0…
最新文章