东方博宜 OJ 1201-1300

目录

1268:【基础】高精度加法

1269:【基础】高精度减法

1280:【基础】求 2 的 n 次方

1281:【基础】求 2+2×2+2×2×2+⋯+2×2×2×⋯×2

1285:【基础】计算 N 的阶乘

1286:【基础】高精度乘单精度

1287:【基础】高精度乘

 1288:【入门】正整数 n 转换为 8 进制

1289:【入门】正整数 N 转换为 16 进制

解法一:分别判断  n%16 结果在 0~9 及 10~15 的哪个范围,分别转换为对应的字符

解法二:用字符串存储十六进制对应的字符,简化 16 进制转为字符的过程

1290:【入门】二进制数转换十进制

1291:【入门】八进制转十进制

1292:【入门】十六进制转十进制

1294:【基础】二进制转十六进制


1268:【基础】高精度加法

#include <bits/stdc++.h>
using namespace std;
/*
第一步:用 string 读入高精度整数
第二步:将两个高精度整数逆序存入 a、b 两个整数数组
第三步:从左向右,逐位求和,结果存入 c 数组从左向右,逐位进位
第四步:逆序输出结果
*/
string s1, s2;//高精度整数
int a[250], b[250], c[500];
int i, j, len;int main(){cin >> s1 >> s2;//第二步:将两个高精度整数逆序存入 a b 两个整数数组for (i = 0; i < s1.size(); i++){a[s1.size()-i-1] = s1[i]-'0';}for (i = 0; i < s2.size(); i++){b[s2.size()-i-1] = s2[i]-'0';}//第三步:从左向右,逐位求和,结果存入 c 数组//        从左向右,逐位进位//加法的次数,取决于两个整数的较长的字符串len = s1.size();if (s2.size() > s1.size()){len = s2.size();}//逐位相加for (i = 0; i < len; i++){c[i] = a[i] + b[i];}//逐位进位for (i = 0; i < len; i++){if (c[i] >= 10){c[i+1] = c[i+1] + c[i] / 10;c[i] = c[i] % 10;}}//第四步:逆序输出结果//两个不超过 len 位的整数做加法,结果可能是 1en+1 位if (c[len] != 0){len++;}//逆序输出结果for (i = len - 1; i >= 0; i--){cout << c[i];}}

1269:【基础】高精度减法

#include <bits/stdc++.h>
using namespace std;
/*
第一步:判断 s1 和 s2 的大小关系 
第二步:将两个字符串逆序存入 2 个整数数组
第三步:从左至右,逐位相减,不够借位
第四步:从右向左,逆序输出
*/
string s1, s2;
int a[250], b[250], c[250];
int i, len, p;
char f = '+';//表示结果的正负int main(){cin >> s1 >> s2;//字符串长的数值更大,一样长字典码大的一定大;if (s1.size() < s2.size() || (s1.size() == s2.size() && s1 < s2)){f = '-';swap(s1, s2);//直接交换两个变量的值}//将s1和s2逆序存入整数数组for (i = 0; i < s1.size(); i++){a[i] = s1[s1.size()-i-1] - '0';}for (i = 0; i < s2.size(); i++){b[i] = s2[s2.size()-i-1] - '0';}//逐位相减len = s1.size();for (i = 0; i < len; i++){//如果不够减,向右借 1,当 10 用if (a[i] < b[i]){a[i+1] = a[i+1] - 1;a[i] = a[i] + 10;}c[i] = a[i] - b[i];}//判断是否要输出负号if (f == '-') cout << f;//从右向左逐位输出,从第一个遇到的非 0 元素开始输出for (i = len - 1; i >= 0; i--){if (c[i] != 0){p = i;break;}}//逆序从第一个非 0 元素输出每一位for (i = p; i >= 0; i--){cout << c[i];}
}

1280:【基础】求 2 的 n 次方

#include <bits/stdc++.h>
using namespace std;int a[100] = {1};
//k 代表 a 数组元素的个数,代表了高精度的整数的位数
int i, j, k = 1, n;
int main(){cin >> n;//循环 n 次,每次都将 a 数组 * 2for (i = 1; i <= n; i++){//将 a 数组的每一位都 * 2for (j = 0; j < k; j++){a[j] = a[j] * 2;}//逐位进位for (j = 0; j < k; j++){if (a[j] >= 10){a[j+1] = a[j+1] + a[j] / 10;a[j] = a[j] % 10;}}//判断 a 数组是否多出一位if( a[k] != 0){k++;}}//逆序输出 a 数组的 k 个数for(i = k - 1; i >= 0; i--){cout << a[i];}
}

1281:【基础】求 2+2×2+2×2×2+⋯+2×2×2×⋯×2

#include <bits/stdc++.h>
using namespace std;int a[100] = {1};
int r[1000];
//k 代表 a 数组元素的个数,代表了高精度的整数的位数
//k2 代表了高精度的总和的位数
int i, j, k = 1, n, k2 = 1, len;
int main(){cin >> n;//循环 n 次,每次都将 a 数组 * 2for (i = 1; i <= n; i++){//将 a 数组的每一位都 * 2for (j = 0; j < k; j++){a[j] = a[j] * 2;}//逐位进位for (j = 0; j < k; j++){if (a[j] >= 10){a[j+1] = a[j+1] + a[j] / 10;a[j] = a[j] % 10;}}//判断 a 数组是否多出一位if ( a[k] != 0){k++;}//求出了 2 的 i 次方,结果为 k 位//将 k 位的 2 的 i 次方,加到 k2 位的总和 r 上 len = k;if (k2 > k) len = k2;for (j = 0; j < len; j++){r[j] = r[j] + a[j];//进位if (r[j] >= 10){r[j+1] = r[j+1] + r[j] /10;r[j] = r[j] % 10;}//判断 r 数组是否多了 1 位if (r[k2] != 0) k2++;}}//输出 r 数组的结果 for (i = k2 - 1; i >= 0; i--){cout << r[i];}
}

1285:【基础】计算 N 的阶乘

1286:【基础】高精度乘单精度

#include <bits/stdc++.h>
using namespace std;
/*
第一步:将高精度整数 s1,逆序存入整数数组 a
第二步:将 a 数组的每一位,逐位和整数 b 相乘,结果存入 a 数组
第三步:逐位进位
第四步:逆序输出 
*/string s1;//高精度整数
int a[250], c[250], p;
int b, len;int main(){cin >> s1 >> b;//第二步:将 s1 逆序存入 a 数组 for (int i = 0; i < s1.size(); i++){a[s1.size()-i-1] = s1[i]-'0';}//第三步:逐位相乘 //乘法的次数,取决于符串长度 len = s1.size();	for (int i = 0; i < len; i++){c[i] = a[i] * b;}//逐位进位 //结果的最大可能长度为高精度数值位数+单精度数值位数-1//该题中单精度数值最大是 10000,即 s1*b 最多多出 4 位 for (int i = 0; i < len + 4; i++){if (c[i] >= 10){c[i+1] = c[i+1] + c[i] / 10;c[i] = c[i] % 10;}}//第四步:逆序输出,从第一个非 0 元素开始输出 for (int i = len + 3; i >= 0; i--){if (c[i] != 0){p = i;break;}}for (int i = p; i >= 0; i--){	 cout << c[i];}}

1287:【基础】高精度乘

#include <bits/stdc++.h>
using namespace std;string s1, s2;
int a[250], b[250], c[500];
int p;int main(){cin >> s1 >> s2;//将 s1 和 s2逆序输入数组for (int i = 0; i < s1.size(); i++) {a[i] = s1[s1.size()-i-1]-'0';}for (int i = 0; i < s2.size(); i++) {b[i] = s2[s2.size()-i-1]-'0';}//逐位乘(进位) for (int i = 0; i < s1.size(); i++){for (int j = 0; j < s2.size(); j++){c[i+j] = c[i+j] + a[i] * b[j];//进位if (c[i+j] >= 10){c[i+j+1] = c[i+j+1] + c[i+j] / 10;c[i+j] = c[i+j] % 10;} }} //逆序输出,从第一个非 0 元素输出for (int i = s1.size() + s2.size() - 1; i >= 0; i--){if (c[i] != 0){p = i;break;}} for (int i = p; i >= 0; i--){cout << c[i];}
}

 1288:【入门】正整数 n 转换为 8 进制

#include <bits/stdc++.h>
using namespace std;int main(){long long n;string s;char c;cin >> n;//除 8 取余 while (n != 0){c = n % 8 + '0';n = n / 8;s = c + s;}if (s == ""){cout << 0;}else{cout << s;}}

1289:【入门】正整数 N 转换为 16 进制

解法一:分别判断  n%16 结果在 0~9 及 10~15 的哪个范围,分别转换为对应的字符

#include <bits/stdc++.h>
using namespace std;
/* 
n是一个不超过 18 位的正整数
*/
long long n, x;
string s;
char c;
int main(){cin >> n;while (n != 0){x = n % 16;//cout<<x<<endl;//将 x 转换为字符逆序存入字符串 s//x:0~9 ->'0'~'9'//x:10~15 ->'A'~'F'if (x < 10){c = x + '0';}else{c = x + 'A' - 10;}s = c + s;n = n / 16;}if (s == ""){cout << 0;}else{cout << s;}}

解法二:用字符串存储十六进制对应的字符,简化 16 进制转为字符的过程

#include <bits/stdc++.h>
using namespace std;
/* 
n是一个不超过 18 位的正整数
*/
long long n, x;
string s;
string t = "0123456789ABCDEF";
int main(){cin >> n;while (n != 0){x = n % 16;//cout << x << endl;//将 x 转换为字符逆序存入字符串 s//x:0~9 ->'0'~'9'//x:10~15 ->'A'~"F//将 n%16 转换为字符逆序存入 ss = t[x] + s;n = n / 16;}if (s == ""){cout << 0;}else{cout << s;}
}

1290:【入门】二进制数转换十进制

#include <bits/stdc++.h>
using namespace std;string s;//存放二进制
int r, t = 1, i;//t:表示权重
int main(){cin >> s;for (i = s.size() - 1; i >= 0; i--){r = r + (s[i] - '0') * t;t = t * 2;}cout << r;
}

1291:【入门】八进制转十进制

#include <bits/stdc++.h>
using namespace std;int main(){string x;long long r = 0;long long t = 1;cin >> x;for (int i = x.size() - 1; i >= 0; i--){r = r + (x[i]-'0') * t;t = t * 8;}cout << r;
}

1292:【入门】十六进制转十进制

#include <bits/stdc++.h>
using namespace std;
string s;
long long r, t = 1, i;//t:表示权重,也就是 16 的 i 次方
int main(){cin >> s;//逆序计算,按权展开for (i = s.size() - 1; i >= 0; i--){//如果 s[i] 是 '0'~'9'if (isdigit(s[i])){r = r + (s[i] - '0') * t;}else{//如果 s[i] 是'A'~'F'r = r + (s[i] - 'A' + 10) * t;}t = t * 16;}cout << r;
}

1294:【基础】二进制转十六进制

# include <bits/stdc++.h>
using namespace std;
//将 4 位的 2 进制 转换为 1 位的 16 进制
char num(string s){//从最低位开始按权展开,将 2 进制转换为十进制//再转换为 16 进制int r = 0, t = 1;for (int i = s.size()-1; i >= 0; i--){r = r + (s[i] - '0') * t;t = t * 2;} char c;//存储 1 位的 16 进制字符if (r < 10) {c = r + '0';}else{c = r + 'A' - 10;}return c;
} int main(){string s, t;//存放二进制cin>>s;//补 0 if (s.size() % 4 == 1){s = "000" + s;}else if (s.size() % 4 == 2){s = "00" + s;}else if (s.size() % 4 == 3){s = "0" + s;}	// 每 4 位一格,将 4 位的二进制转换为 16 进制for (int i = 0; i < s.size(); i = i + 4){t = s.substr(i, 4);cout << num(t);	} 
}

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

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

相关文章

第一百三十三节 Java数据类型教程 - Java基本数据类型

Java数据类型教程 - Java基本数据类型 Java定义了八种基本类型的数据:byte&#xff0c;short&#xff0c;int&#xff0c;long&#xff0c;char&#xff0c;float&#xff0c;double和boolean。 基本类型通常被称为简单类型。 这些可以分为四组: Integers - 包括byte&#x…

求推荐几款http可视化调试工具?

Postman 非常流行的API调试工具&#xff0c;适用于构建、测试和文档化APIs。它支持各种HTTP方法&#xff0c;有强大的集合和环境管理功能&#xff0c;以及代码生成能力。 BB-API 是一款旨在提升开发效率的工具&#xff0c;它专注于提供简约、完全免费且功能强大的HTTP模拟请…

目标检测算法

一、绪论 1.1 目标检测算法的定义和背景 1.2 目标检测算法在计算机视觉领域的重要性 二、目标检测算法的发展历程 2.1 传统目标检测算法 2.2 基于深度学习的目标检测算法 2.3 目标检测算法的评价指标 三、目标检测算法的关键技术 3.1 区域建议网络(RPN) 3.2 卷积神经…

springmvc快速上手

一、创建工程 1、创建maven工程&#xff0c;添加maven-archetype-webapp模版 2、添加依赖 <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.co…

每日一题——Python实现PAT乙级1059 C语言竞赛(举一反三+思想解读+逐步优化)四千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 时间复杂度分析 空间复杂度分析 代码优化建议 总结 我要更强 优化方法…

macos Darwin安装faiss-cpu

文章目录 macos 使用brew instll fass, 后python3.12执行引用faiss包功能出现的问题 安装时遇到问题如下 ModuleNotFoundError Traceback (most recent call last) File ~/Src/ai/framework/langchain/.venv/lib/python3.12/site-packages/langchain_co…

Spring事务的实现

Spring事务的实现分为编程式事务和声明式事务。 编程式事务 编程式事务管理需要开发者在代码中显式地调用事务管理相关的方法,如`beginTransaction()`、`commit()`和`rollback()`等。在Spring中,通常通过以下两种方式来实现编程式事务: 使用`TransactionTemplate`,`Tran…

macOS 安装redis

安装Redis在macOS上通常通过Homebrew进行&#xff0c;Homebrew是macOS上一个流行的包管理器。以下是安装Redis的步骤&#xff1a; 一 使用Homebrew安装Redis 1、安装Homebrew&#xff08;如果尚未安装&#xff09;&#xff1a; 打开终端&#xff08;Terminal&#xff09;并执…

.NET周刊【6月第4期 2024-06-23】

国内文章 C#.Net筑基-集合知识全解 https://www.cnblogs.com/anding/p/18229596 .Net中提供了数组、列表、字典等多种集合类型&#xff0c;分为泛型和非泛型集合。泛型集合具有更好的性能和类型安全性。集合的基础接口包括IEnumerator、IEnumerable、ICollection、IList、ID…

Gradio 4.37.1官方教程二:Blocks

文章目录 一、Blocks及事件监听器1.1 Blocks结构1.2 事件监听器的类型1.3 多数据流1.4 多输入组件1.5 多输出组件1.6 更新组件配置1.7 添加示例1.8 连续运行事件1.9 持续运行事件1.9.1 every参数1.9.2 load方法1.9.3 change方法 1.10 收集事件数据1.11 绑定多个触发器到同一函数…

基于线调频小波变换的一维时间序列时频分析方法(MATLAB)

在机械故障诊断领域,振动信号的处理常采用以快速傅立叶变换为基础的相关分析、幅值分析、频谱分析等时域和频域分析方法。但经典的FFT存在固有缺点,即它虽然在频域范围内是完全局部化的,但是它不包含任何时域信息,因而不适于分析非平稳信号。近年来涌现的各种时频分析方法(短时…

【刷题】初步认识深搜(DFS)

送给大家一句话&#xff1a; 拥有希望的人&#xff0c;和漫天的星星一样&#xff0c;是永远不会孤独的。 -- 《星游记》 初步认识深搜&#xff08;DFS&#xff09; dfs算法二叉树中的深搜Leetcode 129. 求根节点到叶节点数字之和题目描述算法思路 Leetcode 814. 二叉树剪枝题…

Redis-实战篇-缓存更新策略(内存淘汰、超时剔除、主动更新)

文章目录 1、缓存更新策略1.1、内存淘汰1.2、超时剔除1.3、主动更新 2、业务场景&#xff1a;3、主动更新在企业中业务实现有三种方式3.1、Cache Aside Pattern3.1.1、操作缓存和数据库时有三个问题需要考虑&#xff1a;3.1.1.1、删除缓存还是更新缓存&#xff1f;3.1.1.2、如何…

数据同步软件有哪些

数据同步软件有哪些呢&#xff1f;随着企业规模的扩大&#xff0c;企业数据也积累得越来越多&#xff0c;万一发生宕机风险&#xff0c;那么这个损失将不可估量。所以为了容灾备用&#xff0c;我们往往需要将数据同步到另一台备胎服务器上&#xff0c;进行冗余。 那么需要同步的…

centos7.9 python3环境(virtualenv)搭建及所遇错误

人望山&#xff0c;鱼窥荷&#xff0c;真正喜欢想要的&#xff0c;没有一样可以轻易得到。 目录 # 1. 解决版本冲突问题--建议不要跳过(一定要查看软链接是否链接正确) # 2. python3(virtualenv)环境搭建 # 3. virtualenv常用命令 # 4. 所遇错误解析 ## 4.1 遇到 No modul…

惠海 H6246低功耗DC/DC降压型恒压芯片60V降3.3V5V12V 蓝牙模块 单片机供电

1.产品描述 H6246是一种内置60V耐压MOS&#xff0c;支持输入高达48V的高压降压开关控制器&#xff0c;可以向负载提供0.3A的连续电流。H6246支持输出恒定电压&#xff0c;可以通过调节VFB采样电阻来设置输出电压&#xff0c;同时支持最大电流限制&#xff0c;可以通过修改CS采…

操作系统期末复习考题二

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、前言&#x1f680;&#x1f680;&#x1f680;二、正文☀️☀️☀️三、总结&#x1f353;&#x1f353;&#x1f353; 一、前言&#x1f680;&#x1f680;&am…

【资源调度】1-何为调度?

导读&#xff1a;本期是全网最全【资源调度】系列推文的第1期(共50期左右)。我们将对调度的定义与作用、计划与调度的关系、调度问题的拆解做出详细介绍&#xff0c;使大家对【资源调度】问题有了一个整体的认识&#xff0c;为后续的内容奠定基础。 作者1&#xff1a;张哲铭&am…

个人搭建cppreference网站

近日,由于购买的腾讯云服务器要过期了,之前在服务器搭建的cppreference也要重新搭建,故写下此文章 cppreference的访问速度也慢,故自己WSL子系统简单搭键一下是个不错的选择 环境准备 首先,自己先安装Nginx,在网上找安装教程即可下载cppreference网站资源包:https://pan.baidu…

ubuntu 软链接(ubuntu20.04)

ubuntu 软链接&#xff08;ubuntu20.04&#xff09; 在Ubuntu和其他Linux系统中&#xff0c;软链接&#xff08;也称为符号链接&#xff09;是文件系统中的一个特殊类型的文件&#xff0c;它作为一个引用或指针&#xff0c;指向另一个文件或目录。软链接类似于Windows中的快捷…