模拟与高精度

题目描述

高精度加法,相当于 a+b problem,不用考虑负数

输入格式

分两行输入。a,b≤10500。

输出格式

输出只有一行,代表 a+b 的值。

输入输出样例

输入 #1复制

1
1

输出 #1复制

2

输入 #2复制

1001
9099

输出 #2复制

10100

说明/提示

20% 的测试数据,0≤a,b≤1e9;

40% 的测试数据,0≤a,b≤1e18。

为了方便从低位到高位逐位计算,先将两个字符串反转。

从最低位开始,逐位相加,并处理进位。

如果最后还有进位,将其写入结果的最高位。

反转回正常顺序后,去除结果中的前导零。

如果结果为全零,返回”0“否则返回有效部分。

源代码:

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
// 反转字符串函数
string rever(string str) {return string(str.rbegin(), str.rend()); // 使用反向迭代器反转字符串
}
// 大数加法函数
string add(string a, string b) {int x, carry = 0; // x 用于存储当前位的和,carry 用于存储进位a = rever(a); // 反转字符串 a,方便从低位到高位计算b = rever(b); // 反转字符串 bstring c; // 用于存储结果c.resize(max(a.length(), b.length()) + 1, '0'); // 预分配结果空间,多一位用于可能的最高位进位a.resize(max(a.length(), b.length()) + 1, '0'); // 补齐 a 的长度,避免越界b.resize(max(a.length(), b.length()) + 1, '0'); // 补齐 b 的长度for (int i = 0; i < max(a.length(), b.length()); i++) {x = a[i] - '0' + b[i] - '0' + carry; // 计算当前位的和(包括进位)carry = x / 10; // 计算进位c[i] = (x % 10) + '0'; // 存储当前位的结果}if (carry > 0)c[max(a.length(), b.length())] = carry + '0'; // 如果最后还有进位,写入最高位c = rever(c); // 反转回正常顺序int start = 0;while (start < max(a.length(), b.length()) && c[start] == '0')start++; // 去除前导零c = c.substr(start); // 截取有效部分if (c.empty())return "0"; // 如果结果为全零,返回 "0"return c;
}
int main() {string a, b;cin >> a >> b;cout << add(a, b);return 0;
}

题目背景

高精度乘法模板题。

题目描述

给出两个非负整数,求它们的乘积。

输入格式

输入共两行,每行一个非负整数。

输出格式

输出一个非负整数表示乘积。

输入输出样例

输入 #1复制

1
2

输出 #1复制

2

说明/提示

每个非负整数不超过 1e2000。

为了方便从低位到高位逐位计算,先将两个字符串反转。

从最低位开始,逐位相乘,并处理进位。

将每一位的乘积累加到结果字符串的对应位置。

如果最后还有进位,将其写入结果的最高位。

反转回正常顺序后,去除结果中的前导零。

如果结果为全零,返回”0”,否则返回有效部分。

源代码:

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
// 反转字符串函数
string rever(string str) {return string(str.rbegin(), str.rend()); // 使用反向迭代器反转字符串
}
// 大数乘法函数
string mul(string a, string b) {int x, carry; // x 用于存储当前位的乘积,carry 用于存储进位a = rever(a); // 反转字符串 a,方便从低位到高位计算b = rever(b); // 反转字符串 bstring c; // 用于存储结果c.resize(a.length() + b.length(), '0'); // 预分配结果空间,长度为 a 和 b 的长度之和for (int i = 0; i < a.length(); i++) {carry = 0; // 每次外层循环开始时,进位初始化为 0for (int j = 0; j < b.length(); j++) {x = (a[i] - '0') * (b[j] - '0') + (c[i + j] - '0') + carry; // 计算当前位的乘积和进位carry = x / 10; // 计算新的进位c[i + j] = (x % 10) + '0'; // 存储当前位的结果}if (carry > 0)c[i + b.length()] = (c[i + b.length()] - '0' + carry) + '0'; // 处理最高位进位}c = rever(c); // 反转回正常顺序int start = 0;while (start < c.length() && c[start] == '0')start++; // 去除前导零c = c.substr(start); // 截取有效部分if (c.empty())return "0"; // 如果结果为全零,返回 "0"return c;
}
int main() {string a, b;cin >> a >> b;cout << mul(a, b);return 0;
}

题目描述

用高精度计算出 S=1!+2!+3!+⋯+n!(n≤50)。

其中 ! 表示阶乘,定义为 n!=n×(n−1)×(n−2)×⋯×1。例如,5!=5×4×3×2×1=120。

输入格式

一个正整数 n

输出格式

一个正整数 S,表示计算结果。

输入输出样例

输入 #1复制

3

输出 #1复制

9

说明/提示

【数据范围】

对于 100% 的数据,1≤n≤50。

前面已经介绍了高精度乘法和加法,这里就直接使用上面的乘法和加法函数,只需要再写一个求阶乘的函数,再通过循环求和就行了

源代码:

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int n;
string rever(string str) {return string(str.rbegin(), str.rend());
}
string mul(string a, string b);
string add(string a, string b);
string jc(int n) {string a = "1";for (int i = 0; i < n; i++) {string b = to_string(i + 1);//将整形或者浮点型转换成对应的字符串a = mul(a, b);}return a;
}
int main() {cin >> n;string c = "0";for (int i = 1; i <= n; i++)c = add(c, jc(i));cout << c;return 0;
}
string mul(string a, string b) {int x, carry;a = rever(a);b = rever(b);string c;c.resize(a.length() + b.length(), '0');for (int i = 0; i < a.length(); i++) {carry = 0;for (int j = 0; j < b.length(); j++) {x = (a[i] - '0') * (b[j] - '0') + (c[i + j] - '0') + carry;carry = x / 10;c[i + j] = (x % 10) + '0';}if (carry > 0)c[i + b.length()] = (c[i + b.length()] - '0' + carry) + '0';}c = rever(c);int start = 0;while (start < c.length() && c[start] == '0')start++;c = c.substr(start);if (c.empty())return "0";return c;
}
string add(string a, string b) {int x, carry = 0;a = rever(a);b = rever(b);string c;c.resize(max(a.length(), b.length()) + 1, '0');a.resize(max(a.length(), b.length()) + 1, '0');b.resize(max(a.length(), b.length()) + 1, '0');for (int i = 0; i < max(a.length(), b.length()); i++) {x = a[i] - '0' + b[i] - '0' + carry;carry = x / 10;c[i] = (x % 10) + '0';}if (carry > 0)c[max(a.length(), b.length())] = carry + '0';c = rever(c);int start = 0;while (start < max(a.length(), b.length()) && c[start] == '0')start++;c = c.substr(start);return c;
}

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

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

相关文章

鉴源实验室·基于DDS的模糊测试研究

作者 | 柳泽 上海控安可信软件创新研究院 鉴源实验室 01 引 言 近年来&#xff0c;随着工业4.0和智能网联技术的发展&#xff0c;数据驱动型系统的需求日益增加&#xff0c;推动了诸如 DDS&#xff08;Data Distribution Service&#xff09;等高效数据分发中间件的应用和发…

新功能:“禁用TLS特性”,让浏览器更隐蔽

如果你在使用浏览器时担心隐私泄露、被广告追踪&#xff0c;或者需要绕过反作弊系统&#xff0c;AdsPower 的新功能——“禁用 TLS 特性”或许可以帮到你。 今天&#xff0c;我们就来聊聊这个功能的作用、原理&#xff0c;以及如何使用。 &#x1f50d;先来聊聊&#xff1a;TL…

【第一节】C++设计模式(创建型模式)-工厂模式

目录 前言 一、面向对象的两类对象创建问题 二、解决问题 三、工厂模式代码示例 四、工厂模式的核心功能 五、工厂模式的应用场景 六、工厂模式的实现与结构 七、工厂模式的优缺点 八、工厂模式的扩展与优化 九、总结 前言 在面向对象系统设计中&#xff0c;开发者常…

DeepSeek:企业级大模型私有化部署与应用全解析(深度扩展版)

一、DeepSeek基本信息介绍(扩展) DeepSeek作为中国首个实现全栈自主可控的开源大模型体系,其技术演进经历了DeepSeek LLM→DeepSeek MoE→DeepSeek-V2→DeepSeek-V3→DeepSeek R1五大阶段。核心突破在于: 架构创新:在Transformer基础上引入分组查询注意力(GQA),推理成…

zyNo.25

SSRF漏洞 在了解ssrf漏洞前先了解curl命令的使用 1.curl命令的使用 基本格式&#xff1a;curl<参数值>请求地址 get请求&#xff1a;curl http://127.0.0.1 post请求&#xff1a;curl -X POST -d "a1&b2" http://127.0.0.1/(其中&#xff0c;使用-X参…

文件理解:从C标准库到系统调用

目录 一、C 标准库文件操作 1. 文件的写入 2. 文件的读取 3. 数据输出到显示器 4. 标准输入输出流 二、C 标准库文件操作模式 三、系统调用文件操作 1. 文件的打开与描述符 2. 文件的读取 3. 文件操作标志 4. 文件权限 5. 文件描述符 四、C 标准库与系统调用的比较…

【阮一峰】5.函数

函数 简介 函数的类型声明&#xff0c;需要在声明函数时&#xff0c;给出参数的类型和返回值的类型。 function hello(txt: string): void {console.log("hello " txt); }如果变量被赋值为一个函数&#xff0c;变量的类型有两种写法。 // 写法一 const hello f…

【R语言】主成分分析与因子分析

一、主成分分析 主成分分析&#xff08;Principal Component Analysis, PCA&#xff09;是一种常用的无监督数据降维技术&#xff0c;广泛应用于统计学、数据科学和机器学习等领域。它通过正交化线性变换将&#xff08;高维&#xff09;原始数据投影到一个新的坐标系&#xff…

pycharm画图程序如何一步一步的调试

1.设置合适的 Matplotlib 后端 在 PyCharm 中&#xff0c;有时需要手动指定 Matplotlib 后端。你可以尝试在脚本的最开始加入以下代码&#xff0c;强制使用 TkAgg 后端&#xff0c;这样可以保证图形更新的实时性&#xff1a; import matplotlib matplotlib.use(TkAgg) # 指定…

基于Java+Swing+Mysql实现旅游管理信息系统

基于JavaSwingMysql实现旅游管理信息系统 一、系统介绍二、功能展示1.登陆2.注册3.旅游信息查询4.查看游行团信息5.报名6、报名信息管理 三、数据库四、其它1.其他系统实现五.获取源码 一、系统介绍 用户&#xff1a;登陆、注册、旅游信息查询、查看游行团信息、报名 管理员&a…

Linux配置端口映射——其他机器可以访问

一般使用虚拟机都是NAT网络模式&#xff0c;但是这种模式的问题是&#xff1a;其他机器不能访问虚拟机 想让其他机器访问这个电脑上的虚拟机&#xff0c;需要做端口映射。 之后就可以使用finalshell连接 注意&#xff1a;如果要连接其他人的虚拟机&#xff0c;需要对方先关闭自…

快速部署deepseek

一、安装ollama 访问https://ollama.com/download 下载并安装对应系统的ollama。 Ollama 是一个开源工具&#xff0c;旨在帮助用户在本地机器上轻松运行和管理大型语言模型&#xff08;LLM&#xff09;。它提供了一个简单易用的命令行界面&#xff0c;可以下载、安装和运行各…

用Deepseek查询快证API-物流查询-实名认证-企业实名认证

快证API可能是一个提供多种验证和查询服务的平台&#xff0c;包括但不限于企业实名认证、短链接生成、手机号归属地查询、IP地址查询等。以下是根据搜索结果整理的关于快证API的相关信息&#xff1a; ‌企业实名认证API‌&#xff1a; 功能&#xff1a;通过与企业相关数据库进行…

基于指纹识别技术的考勤打卡设计与实现(论文+源码)

1 系统总体设计 本次基于指纹识别技术的考勤打卡系统的整体框图如图2.1所示&#xff0c;主控制模块选用单片机STC89C52&#xff0c;同时还包括AT24C02存储电路&#xff0c;指纹模块&#xff0c;LCD12864液晶&#xff0c;继电器&#xff0c;矩阵键盘等硬件电路。其中指纹模块和…

【云安全】云原生-K8S(四)安全问题分析

Kubernetes&#xff08;K8S&#xff09;因其强大的容器编排能力成为了云计算和微服务架构的首选&#xff0c;但同时也带来了复杂的安全挑战。本文将概述K8S的主要安全问题&#xff0c;帮助安全工程师理解潜在威胁&#xff0c;并采取相应的防护措施。 K8S 攻击面概览 下面两张…

基于JAVA毕业生信息招聘信息平台设计与实现

以往的毕业生信息招聘信息管理事务处理主要使用的是传统的人工管理方式&#xff0c;这种管理方式存在着管理效率低、操作流程繁琐、保密性差等缺点&#xff0c;长期的人工管理模式会产生大量的文本文件与文本数据&#xff0c;这对事务的查询、更新以及维护带来不少困难。随着互…

ES6模块化和CommonJs模块化区别

ES6模块化和CommonJs模块化区别 在JavaScript中&#xff0c;模块化是将代码拆分成独立的块&#xff0c;每个块可以独立封装和管理。ES6模块化和CommonJS是两种常见的模块化规范&#xff0c;它们在语法、加载方式和运行时特性上有显著差异。 语法差异 CommonJS模块使用requir…

DeepSeek自动化写作软件

DeepSeek写作软件的三大核心功能 对于内容创作者来说&#xff0c;写作不仅是表达思想的过程&#xff0c;更是一项需要投入大量时间和精力的任务。面对日益增长的内容需求&#xff0c;写作效率低下、内容质量不高等问题&#xff0c;常常让创作者感到焦虑。而 DeepSeek 写作软件…

深入解析 Flutter Bloc:从原理到实战

深入解析 Flutter Bloc&#xff1a;从原理到实战 Bloc&#xff08;Business Logic Component&#xff09;是 Flutter 中一个强大的状态管理工具&#xff0c;基于事件驱动的架构设计&#xff0c;适合管理复杂的业务逻辑和状态。Bloc 的核心理念是将业务逻辑与 UI 分离&#xff…

使用右侧值现象来处理一个word导入登记表的需求

需求也简单&#xff0c;导word文件用户登记表&#xff0c;有各部门的十几个版本&#xff08;为什么这么多&#xff1f;不知道&#xff09;。这里说下谈下我的一些代码做法&#xff1a; 需求分析&#xff1a; 如果能解决java字段和各项填的值怎么配对的问题&#xff0c;那么就…