洛谷每日一题——B2143 进制转换、P1003 [NOIP2011 提高组] 铺地毯

B2143 进制转换

题目描述

进制转换 - 洛谷

运行代码

#include<stdio.h>
int main(){
	int a,b,i=0,j,num[20];
	char k[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
	
	scanf("%d",&a);
	scanf("%d",&b);
	do{
		i++;
		num[i]=a%b;
		a=a/b;
	}while(a!=0);
	printf("");
	for(j=i;j>=1;j--)
	    printf("%c",k[num[j]]);
}
简化后
#include <stdio.h>

int main() {
    int a, b, i = 0;
    char k[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};

    scanf("%d", &a);
    scanf("%d", &b);

    // 直接在循环条件中进行计算和判断,无需单独的自增操作和额外的变量来记录次数
    int num[20];
    while (a!= 0) {
        num[i++] = a % b;
        a /= b;
    }

    // 使用逆序遍历数组的方式输出结果
    printf("");
    for (int j = i - 1; j >= 0; j--) {
        printf("%c", k[num[j]]);
    }

    return 0;
}

代码思路

通过不断地对输入的十进制数 a 进行除以目标进制数 b 的操作,获取每次除法运算的余数,将这些余数按照从低位到高位的顺序存储起来,最后再按照从高位到低位的顺序输出这些余数对应的字符表示,从而得到转换后的目标进制数。

  • 对于将十进制数转换为其他进制数,其基本原理是基于数制转换的规则。例如,将十进制数转换为二进制数时,就是不断地用十进制数除以 2,记录每次的余数,直到商为 0。最后将余数逆序排列就是对应的二进制数。同样的道理适用于转换为其他进制,这里代码中的 b 就是目标进制数。
  • 在代码中,通过 do-while 循环来不断进行除法运算并获取余数。每次循环中,先将当前的余数存储到数组 num 中,然后更新被除数 a(即 a = a / b),直到被除数 a 变为 0,此时表示转换过程完成。
  • 最后,通过 for 循环从存储余数的数组 num 的末尾(即高位)开始,依次输出每个余数对应的字符表示。这里通过字符数组 k 来将数字形式的余数转换为对应的十六进制字符表示(因为十六进制数会用到 0 - 9 以及 A - F 这些字符),对于小于 10 的余数,直接对应 k 数组中的 0 - 9 字符,对于大于等于 10 的余数,对应 k 数组中的 A - F 字符。

P1003 [NOIP2011 提高组] 铺地毯

题目描述

[NOIP2011 提高组] 铺地毯 - 洛谷

运行代码

#include<stdio.h>
 
const int MAXN = 10000 + 5;
 
int a[MAXN], b[MAXN], g[MAXN], k[MAXN];
 
int main() {
    int n, x, y;
    
    scanf("%d", &n);
    for(int i = 0; i < n; i++) {
        scanf("%d%d%d%d", &a[i], &b[i], &g[i], &k[i]);//输入
    }
    scanf("%d%d", &x, &y);
    
    int ans = -1;
    for(int i = 0; i < n; i++) {
        if(x >= a[i] && y >= b[i] && x <= a[i] + g[i] && y <= b[i] + k[i]) {
            ans = i + 1;//ans的最终值恰好是最上面的那张地毯编号
        }
    }
    
    printf("%d\n", ans);//输出结果
    
    return 0;
}
改进后
#include <stdio.h>

#define MAXN 10005

int main() {
    int n, x, y;
    int carpets[MAXN][4];

    scanf("%d", &n);

    // 读取每张地毯的信息
    for (int i = 0; i < n; i++) {
        scanf("%d %d %d %d", &carpets[i][0], &carpets[i][1], &carpets[i][2], &carpets[i][3]);
    }

    scanf("%d %d", &x, &y);

    int ans = -1;
    for (int i = 0; i < n; i++) {
        if (x >= carpets[i][0] && y >= carpets[i][1] && x <= carpets[i][0] + carpets[i][2] && y <= carpets[i][1] + carpets[i][3]) {
            ans = i + 1;
            break;  // 一旦找到符合条件的地毯,就可以直接退出循环,因为只需要找到最上面的那张地毯
        }
    }

    printf("%d\n", ans);

    return 0;
}

代码思路

这段代码的主要功能是接收一系列矩形区域(可看作是一张张 “地毯”)的坐标信息以及一个点的坐标,然后判断这个点位于哪一张 “地毯” 上(如果存在的话),最后输出该 “地毯” 的编号;若点不在任何 “地毯” 上,则输出 -1。

  • 首先,定义了一些数组 abgk 来分别存储每张 “地毯” 的起始横坐标、起始纵坐标、横向长度、纵向长度等信息。还定义了常量 MAXN 用于限制数组的大小,以防止数组越界(这里表示最多能处理的 “地毯” 数量)。
  • 在 main 函数中:
    • 先读取要处理的 “地毯” 数量 n,然后通过循环依次读取每张 “地毯” 的坐标信息并存储到相应数组中。
    • 接着读取一个点的坐标 x 和 y
    • 之后再通过一个循环遍历所有的 “地毯”,对于每张 “地毯”,判断给定的点 (x, y) 是否在该 “地毯” 所表示的矩形区域内。判断条件为:点的横坐标 x 要大于等于该 “地毯” 的起始横坐标 a[i],纵坐标 y 要大于等于起始纵坐标 b[i],同时横坐标 x 要小于等于该 “地毯” 起始横坐标加上横向长度 a[i] + g[i],纵坐标 y 要小于等于起始纵坐标加上纵向长度 b[i] + k[i]。如果满足这些条件,就说明点在这张 “地毯” 上,将 ans 赋值为该 “地毯” 的编号 i + 1(因为数组下标从 0 开始,所以编号要加 1)。
    • 最后输出 ans 的值,这个值就是点所在 “地毯” 的编号,如果点不在任何 “地毯” 上,ans 的值就是 -1。

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

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

相关文章

Elasticsearch的自定义查询方法到底是啥?

Elasticsearch主要的目的就是查询&#xff0c;默认提供的查询方法是查询全部&#xff0c;不满足我们的需求&#xff0c;可以定义查询方法 自定义查询方法 单条件查询 我们查询的需求&#xff1a;从title中查询所有包含"鼠标"这个分词的商品数据 SELECT * FROM it…

环境配置与搭建

安装pytorch 官网连链接&#xff1a;https://pytorch.org/ 特殊包名 cv2 pip install opencv-python sklearn pip install scikit-learnPIL pip install Pillow使用jupyter notebook pip install jupyter安装显卡驱动 Windows Linux 视频教程&#xff1a; 【ubuntu2…

jmeter常用配置元件介绍总结之函数助手

系列文章目录 1.windows、linux安装jmeter及设置中文显示 2.jmeter常用配置元件介绍总结之安装插件 3.jmeter常用配置元件介绍总结之取样器 jmeter常用配置元件介绍总结之函数助手 1.进入函数助手对话框2.常用函数的使用介绍2.1.RandomFromMultipleVars函数2.2.Random函数2.3.R…

【excel基本操作-sumif绝对引用和相对引用

低量级数据的存储 复杂且无法优化的数据报表 怎么学excel? 一、输入与输出 二、计算与处理 三、可视化 四、连接匹配与自动化 excel操作笔记 打开表格第一步筛选 所以筛选的快捷键&#xff1a;shiftctrll 排序&#xff1a;多列排序 开始-排序与筛选-自定义排序-设置关键字添…

【项目计划文档】软件项目计划书,项目总体计划(word原件)

项目开发计划包括项目描述、项目组织、成本预算、人力资源估算、设备资源计划、沟通计划、采购计划、风险计划、项目过程定义及项目的进度安排和里程碑、质量计划、数据管理计划、度量和分析计划、监控计划和培训计划等。 软件全套精华资料包清单部分文件列表&#xff1a; 工作…

音视频入门基础:FLV专题(23)——FFmpeg源码中,获取FLV文件音频信息的实现(下)

音视频入门基础&#xff1a;FLV专题系列文章&#xff1a; 音视频入门基础&#xff1a;FLV专题&#xff08;1&#xff09;——FLV官方文档下载 音视频入门基础&#xff1a;FLV专题&#xff08;2&#xff09;——使用FFmpeg命令生成flv文件 音视频入门基础&#xff1a;FLV专题…

模型 阿玛拉定律(炒作周期)

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。短期乐观&#xff0c;长期低估。 1 阿玛拉定律的应用 1.1 全球定位系统&#xff08;GPS&#xff09;的发展 全球定位系统&#xff08;GPS&#xff09;的发展是阿玛拉定律的一个典型应用案例&#xf…

Kubernetes的概述与架构

Kubernetes 的概述 Kubernetes 是一个可移植、可扩展的开源平台&#xff0c;用于管理容器化的工作负载和服务&#xff0c;方便进行声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统&#xff0c;其服务、支持和工具的使用范围广泛。 Kubernetes 这个名字源于…

【CAN通信】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、CAN通信简介二、CAN通信的逻辑电平分析三、CAN通信的差分信号线设计CAN标准数据帧格式四、设备发送数据优先级总结 一、CAN通信简介 CAN&#xff08;Controlle…

速度快还看巡飞,筒射巡飞无人机技术详解

筒射巡飞无人机&#xff08;Launch and Recovery by Tube&#xff0c;LRAT或Launcher-Deployed Loitering Munition&#xff0c;LDLM&#xff09;作为一种新型无人机系统&#xff0c;近年来在军事和民用领域都展现出了巨大的潜力。以下是对筒射巡飞无人机技术的详细解析&#x…

如何使用 SSH 连接并管理你的 WordPress 网站

在当今数字化的世界里&#xff0c;网站的管理与维护至关重要。对于使用 WordPress 搭建网站的用户而言&#xff0c;掌握基本的 SSH&#xff08;安全壳&#xff09;命令能够极大地简化网站管理工作。本指南将向你介绍 SSH 的基本知识&#xff0c;并教你如何通过 SSH 连接和管理你…

低轨卫星互联网(二)—— 技术篇

撰写:我是吉米 低轨卫星互联网,地面移动网和卫星通信网融合如图1所示。 图1 低轨卫星互联网演进图 从技术演进发展初衷来看,地面移动网与卫星通信网各自演进,如图2所示。地面移动网旨在提供高速率、大容量、低时延、高移动服务,而卫星通信网则旨在提供广覆盖服务。低轨卫星…

51c大模型~合集18

我自己的原文哦~ https://blog.51cto.com/whaosoft/11621494 #SpatialBot 空间大模型&#xff1a;上交、斯坦福、智源、北大、牛津、东大联合推出&#xff01; 大模型走向空间智能、具身智能之路&#xff01; 智源&#xff0c;斯坦福&#xff0c;北大&#xff0c;牛津&…

OpenGL 异常处理-glCreateShader失败

【1】glCreateShader创建顶点着色器时候报错&#xff0c;如下 【2】原因分析 初始化失败&#xff0c;你使用一个扩extension loader library来访问现代OpenGL&#xff0c;当需要初始化它时&#xff0c;加载器需要一个当前的上下文来加载 【3】解决办法 GLenum glew_err gle…

git 工具原理

git 目录 git git的使用 了解git的三个区域 具体操作 如何下载别人上传到git的工程 -- 可以参考菜鸟教程&#xff0c;包括安装配置git Git 安装配置 | 菜鸟教程 -- Git 是一种分布式版本控制系统&#xff0c;用于管理软件项目的源代码。它是由 Linux 之父 Linus Torval…

Qt Udp的组播(多播)、广播和单播

UDP通讯的基本概念和特点‌ UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是‌TCP/IP协议族中的一种无连接协议&#xff0c;主要用于那些对实时性要求较高而可靠性要求较低的应用场景。UDP的主要特点包括&#xff1a; ‌无连接‌&#xff1a;…

搭建react项目

#pic_center 400x 参考文章&#xff1a; react开发环境搭建 系列文章&#xff1a; 文章目录 create-react-app安装reactnpm版本管理npm 镜像安装 create-react-app安装react 查看是否安装过create-react-app npm list create-react-app -- create-react-app5.0.1 # 输出版本…

Leetcode 两数之和 Ⅱ - 输入有序数组

这段代码实现了在一个非递减排序的数组中找到两个数&#xff0c;使它们的和等于目标值的算法。算法使用了双指针技术&#xff0c;具体思想如下&#xff1a; 算法思想&#xff1a; 初始化指针&#xff1a;定义两个指针 left 和 right&#xff0c;分别指向数组的起始位置和末尾位…

论文略读:GRAG:GraphRetrieval-Augmented Generation

202404 arxiv 1 motivation 在许多应用场景中&#xff0c;如科学文献网络、推荐系统和知识图谱&#xff0c;文档之间存在复杂的关联&#xff0c;这些关联在传统的RAG模型中常常被忽略 例如&#xff0c;在处理科学文献时&#xff0c;RAG仅基于文本相似性的检索方法无法充分利用…

103 - Lecture 1

Introduction to Database 一、Introduction to Database Systems 1. 数据的定义 What is Data? EX: data could be a docx file storing your project status report; data could be a spreadsheet containing information • 数据只有在设计的场景中才有意义。&#xff…