概述
高精度加法+乘法+求阶乘
#include<iostream>
using namespace std;
const int N=1e7+7;
int a[N],b[N],c[N];
int main(){
string n,m;
cin>>n>>m;
int len=max(n.length(),m.length());
for(int i=n.length()-1,j=1;i>=0;i--,j++){
a[j]=n[i]-'0';
}
for(int i=m.length()-1,j=1;i>=0;i--,j++){
b[j]=m[i]-'0';
}
for(int i=1;i<=len;i++){
c[i]+=a[i]+b[i];
c[i+1]=c[i]/10;
c[i]%=10;
}
if(c[len+1]) len++;
for(int i=len;i>=1;i--) cout<<c[i];
return 0;
}
高精度乘法
#include<bits/stdc++.h>
using namespace std;
int a[1000001],b[1000001],c[1000001];
int main(){
string n,m;
cin>>n>>m;
int lena=n.length(),lenb=m.length();
for(int i=lena-1;i>=0;i--) a[lena-i]=n[i]-'0';
for(int i=lenb-1;i>=0;i--) b[lenb-i]=m[i]-'0';
for(int i=1;i<=lena;i++){
for(int j=1;j<=lenb;j++){
c[i+j-1]+=a[i]*b[j];
}
}
int len=lena+lenb;
for(int i=1;i<=len;i++){
c[i+1]+=c[i]/10;
c[i]%=10;
}
for(;!c[len];){
len--;
}
for(int i=max(1,len);i>=1;i--){
cout<<c[i];
}
return 0;
}
高精度求阶乘
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int a[100000] = {};//全部初始化为0
a[0] = 1;
for (int i = 1; i <= n; i++)
{
for (int j = 0; j <= 10000; j++)
a[j] = a[j] * i;//等每一位都乘完后再考虑进位
for (int j = 0; j <= 10000; j++)
{
a[j + 1] += a[j] / 10;
a[j] %= 10;
}
}
int t = 10000;
while (a[t] == 0)t--;//去除前导0,因为一开始给了很多0
for (int i = t; i >= 0; i--)
cout << a[i];//倒序输出嘛,因为一开始是倒序存放的
return 0;
}
最后
以上就是懦弱哈密瓜为你收集整理的快速排序(双指针思想+递归)的全部内容,希望文章能够帮你解决快速排序(双指针思想+递归)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复