我是靠谱客的博主 懦弱哈密瓜,最近开发中收集的这篇文章主要介绍快速排序(双指针思想+递归),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 高精度加法+乘法+求阶乘

#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;
}

最后

以上就是懦弱哈密瓜为你收集整理的快速排序(双指针思想+递归)的全部内容,希望文章能够帮你解决快速排序(双指针思想+递归)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部