当前位置: 首页 > article >正文

蓝桥杯好题推荐-----高精度减法

🌈个人主页:羽晨同学 

 💫个人格言:“成为自己未来的主人~” 

题目链接

记录详情 - 洛谷 | 计算机科学教育新生态https://www.luogu.com.cn/record/205122671

思路讲解

这个题目的解题思路,其实是和高精度加法是非常像的。怎么说呢,其实开始的时候,由于范围受限的原因,所以我们必须把数字存到字符串中,然后用倒序,存到数组中,然后进行高精度减法,进行高精度减法的时候,我们可以逐个相减,然后如果减下的数字小于0,那么+10,前一位减一,最终从非0的第一位开始输出。

代码实现

/*高精度减法*/
#include<iostream>
#include<string>
using namespace std;
const int N = 1e6+10;
int a[N],b[N],c[N];
typedef long long LL;
LL la,lb,lc;
void sub(int a[],int b[],int c[])
{
	for(int i=0;i<lc;i++)
	{
		c[i]+=a[i]-b[i];
		if(c[i]<0)
		{
			c[i]+=10;
			c[i+1]--;
		}
	}
	if(c[lc-1]==0) lc--;
	while(c[lc]==0)
	{
		if(lc==0)
		{
			break;
		}
		lc--;
	}
}
int main()
{
	string x,y;cin>>x>>y;//默认x比y大
	if((y.size()>x.size())||(y.size()==x.size()&&y>x))
	{
		swap(x,y);
		cout<<"-";
	}
	la=x.size();lb=y.size();lc=max(la,lb); 
	for(int i=x.size()-1;i>=0;i--) a[la-1-i]=x[i]-'0';
	for(int i=y.size()-1;i>=0;i--) b[lb-1-i]=y[i]-'0';
	sub(a,b,c);
	for(int i=lc;i>=0;i--) cout<<c[i];
	
	return 0;
}

 好了,今天的内容就到这里,我们明天再见。


http://www.kler.cn/a/569072.html

相关文章:

  • PyQt5入门教程和简单使用
  • 阿里云 Qwen2.5-Max:超大规模 MoE 模型架构和性能评估
  • [AIGC]Agent的ReAct原理基于LangChain框架的Agent构建详解
  • Windows系统安装GPU驱动/CUDA/cuDNN/PyTorch
  • PHP环境安装达梦数据库驱动实操
  • 迷你世界脚本玩家接口:Player
  • Excel 豆知识 - XLOOKUP 为啥会出 #N/A 错误
  • 【音视频】RGG、YUV基础
  • Docker 部署 Graylog 日志管理系统
  • 通往 AI 之路:Python 机器学习入门-语法基础
  • Mysql的基础命令有哪些?
  • Linux的缓存I/O和无缓存IO
  • macOS - 使用 tmux
  • React核心知识及使用场景
  • 对大模型输出的 logits 进行处理,从而控制文本的生成
  • 【人工智能】GPT-4 vs DeepSeek-R1:谁主导了2025年的AI技术竞争?
  • RocketMQ启动教程
  • Docker项目部署-部署前端
  • 一个基于C# Winform开源免费的通用快速开发框架,内置完整的权限架构!
  • 晶圆搬运真空机械臂概述