高精度

高精度加法

题目描述

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

输入格式

分两行输入。a,b10500

输出格式

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

输入 #1

1 1

输出 #1

2

输入 #2

1001 9099

输出 #2

10100

题目链接

P1601

代码

#include<iostream> #include<vector> #include<algorithm> using namespace std; //C=A+B,A>=0,B>=0 vector<int> add(vector<int> &A,vector<int> &B) { vector<int> C; if(A.size()<B.size())return add(B,A); int t=0; for(int i=0;i<A.size();i++) { t+=A[i]; if(i<B.size())t+=B[i]; C.push_back(t%10); t/=10; } if(t)C.push_back(t); return C; } vector<int> A,B,C; string a,b; int main() { cin>>a>>b; for(int i=a.size()-1;~i;i--) A.push_back(a[i]-'0'); for(int i=b.size()-1;~i;i--) B.push_back(b[i]-'0'); C=add(A,B); for(int i=C.size()-1;~i;i--) printf("%d",C[i]); return 0; }

高精度减法

题目描述

高精度减法。

输入格式

两个整数 a,b(第二个可能比第一个大)。

输出格式

结果(是负数要输出负号)。

输入 #1

2 1

输出 #1

1

说明/提示

  • 20% 数据 a,b 在 long long 范围内;
  • 100% 数据 0<a,b1010086

题目链接

P2142

代码

#include<iostream> #include<vector> #include<algorithm> using namespace std; //C=A-B,满足A>=B,A>=0,B>=0 vector<int> sub(vector<int> &A,vector<int> &B) { vector<int> C; for(int i=0,t=0;i<A.size();i++) { t=A[i]-t; if(i<B.size())t-=B[i]; C.push_back((t+10)%10); t=t<0?1:0; } while(C.size()>1&&C.back()==0)C.pop_back(); return C; } vector<int> A,B,C; string a,b; int main() { cin>>a>>b; if(a.size()<b.size()||(a.size()==b.size()&&a<b))putchar('-'),swap(a,b); for(int i=a.size()-1;~i;i--) A.push_back(a[i]-'0'); for(int i=b.size()-1;~i;i--) B.push_back(b[i]-'0'); C=sub(A,B); for(int i=C.size()-1;~i;i--) printf("%d",C[i]); return 0; }

高精度乘法

高精度×低精度

题目描述

给定两个非负整数(不含前导 0) A 和 B,请你计算 A×B 的值。

输入格式

共两行,第一行包含整数 A,第二行包含整数 B。

输出格式

共一行,包含 A×B 的值。

数据范围

1A100000,
0B10000

输入样例:

2 3

输出样例:

6

题目链接

acwing793. 高精度乘法

代码

//高精度*低精度 #include<bits/stdc++.h> using namespace std; //C=A*b vector<int> mul(vector<int> A,int b) { vector<int> C; int t=0; for(int i=0;i<A.size()||t;i++) { if(i<A.size())t+=A[i]*b; C.push_back(t%10); t/=10; } while(C.size()>1&&C.back()==0)C.pop_back(); return C; } int main() { vector<int> A; string a; int b; cin>>a>>b; for(int i=a.size()-1;~i;i--)A.push_back(a[i]-'0'); vector<int> C=mul(A,b); for(int i=C.size()-1;~i;i--)cout<<C[i]; return 0; }

高精度×高精度

题目描述

求两数的积。

输入格式

两行,两个整数。

输出格式

一行一个整数表示乘积。

输入

1 2

输出

2

说明/提示

每个数字不超过 102000 ,需用高精。

题目链接

P1303 A*B Problem

代码

//高精度*高精度 #include<bits/stdc++.h> using namespace std; //C=A*B vector<int>mul(vector<int> A,vector<int> B) { vector<int> C(A.size()+B.size()+1); for(int i=0;i<A.size();i++) for(int j=0;j<B.size();j++) { C[i+j]+=A[i]*B[j]; C[i+j+1]+=C[i+j]/10; C[i+j]%=10; } while(C.size()>1&&C.back()==0)C.pop_back(); return C; } int main() { vector<int> A,B,C; string a,b; cin>>a>>b; for(int i=a.size()-1;~i;i--)A.push_back(a[i]-'0'); for(int i=b.size()-1;~i;i--)B.push_back(b[i]-'0'); C=mul(A,B); for(int i=C.size()-1;~i;i--)cout<<C[i]; return 0; }

高精度÷低精度

题目描述

输入两个整数 a,b,输出它们的商。

输入格式

两行,第一行是被除数,第二行是除数。

输出格式

一行,商的整数部分。

输入

10 2

输出

5

说明/提示

0a1050001b109

题目链接

P1480 A/B Problem

acwing794. 高精度除法

代码

//高精度/低精度 #include<bits/stdc++.h> using namespace std; //A/b=C……r,A>=0,b>0 vector<int> div(vector<int> A,int b,long long &r) { vector<int> C; r=0; for(int i=A.size()-1;~i;i--) { r=r*10+A[i]; C.push_back(r/b); r%=b; } reverse(C.begin(),C.end()); while(C.size()>1&&C.back()==0)C.pop_back(); return C; } int main() { vector<int> A,C; string a; int b; long long r; cin>>a>>b; for(int i=a.size()-1;~i;i--)A.push_back(a[i]-'0'); C=div(A,b,r); for(int i=C.size()-1;~i;i--)cout<<C[i];//商 putchar('\n'); //cout<<r;//余数 return 0; }

__EOF__

本文作者acwing_zyy
本文链接https://www.cnblogs.com/zyyun/p/15212392.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   zyy2001  阅读(88)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示