• 10.17 学习记录


    1. gcd
      int gcd(int a,int b){
          return b ? gcd(b,a%b) : a;
      }
      
      //lcm(a,b)=a*b/gcd(a,b);
      //直接使用
      __gcd(a,b);
    2. 快速幂
      1. a为整型    
    int pow_mod(int a, int n, int m)
    {
        long long ans = 1;
        while(n){
            if(n&1){
                ans = (ans * a) % m;
            }
            a = (a * a) % m;
            n >>= 1;
        }
        return ans;
    }

         2.改进版本,a为字符串

    string pow_mod(string a,int n)
    {
        string ans="1";
        while(n){
            if(n&1){
                ans=multiplication(ans,a);
            }
            a=multiplication(a,a);
            n>>=1;
        }
        return ans;
    }
    1. 进制转换

        一般其他进制为  字符串,十进制为  整型

               3.1   十进制  转   其他进制

                     思路: 

            把要转换的数,除以2(或其他),得到商和余数,将商继续除以2(或其他),直到商为0。最后将所有余数倒序排列,得到数就是转换结果。

            or  使用C++自带函数   _itoa(n,str,b);   //b为进制

     

    #include<bits/stdc++.h>
    using namespace std;
    string itoA(int num,int radix){
        string ans="";
        do{
            int t=num%radix;
            if(t>=0&&t<=9) ans+=t+'0';
            else ans+=t-10+'A';
            num/=radix;
        }while(num!=0);
        reverse(ans.begin(),ans.end());//字符串反转
        return ans;
    }
    int main(){
        int n,b;
        cin>>n>>b;
        string str;
        str=itoA(n,b);
        cout<<str<<endl;
        return 0;
    }
    View Code

                   3.2   其他进制  转   十进制

                          思路:

                              ans=0,  把要转换的字符串从1-->n ,ans 乘以2 (或其他),加上 str [ i ](相当于反着来一遍)

    int Atoi(string s,int n){//n进制转10进制 
        int ans=0;
        for(int i=0;i<s.size();i++){
            char t=s[i];
            if(t>='0'&&t<='9')ans=ans*n+t-'0';
            else ans=ans*n+t-'a'+10;
        }
        return ans;
    }
    View Code

                              or   strtol函数

                  3.3  

          除了上面两个,c++中还有一些定向的转换:std::bitset(转2进制),std::oct(转8进制),std::dec (转10进制),std::hex(转16进制)。

    更多详细参考:https://blog.csdn.net/lady_killer9/article/details/87904318

          4.排序

             4.1  快速排序

                   sort  解决

        or  手写

    //快速排序
    void Quicksort(int array[],int left,int right){
        if(left<right){
            int i=left,j=right,pivot=array[left];
            while(i<j){
                while(i<j&&array[j]>=pivot)j--;
                if(i<j)array[i++]=array[j];
                while(i<j&&array[i]<=pivot)i++;
                if(i<j)array[j--]=array[i];
            }
            array[i]=pivot;
            Quicksort(array,left,i-1);
            Quicksort(array,i+1,right);
        }
    }
    View Code

             4.2  归并排序

    #include<iostream>
    #include<algorithm>
    using namespace std;
    void mergearray(int aa[],int left,int mid,int right,int temp[]){
        int i=left,j=mid+1;
        int x=mid,y=right;
        int k=0;
        while(i<=x&&j<=y){
            if(aa[i]<=aa[j])temp[k++]=aa[i++];
            else temp[k++]=aa[j++];
        }
        while(i<=x)temp[k++]=aa[i++];
        while(j<=y)temp[k++]=aa[j++];
        for(int i=0;i<k;i++){
            aa[left+i]=temp[i];
        }
    }
    void mergesort(int aa[],int left,int right,int temp[]){
        if(left<right){
            int mid=(left+right)/2;
            mergesort(aa,left,mid,temp);
            mergesort(aa,mid+1,right,temp);
            mergearray(aa,left,mid,right,temp);
        }
    }
    int main(){
        int a[100],b[100];
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
            cin>>a[i];
        mergesort(a,0,n-1,b);
        for(int i=0;i<n;i++)
            cout<<a[i]<<" ";
        cout<<endl;
        return 0;
    } 
    View Code

    完成,还剩高精度没看,等会看吧。

        

  • 相关阅读:
    用gethub下载ardupilot的最新源码
    Mavlink协议理解
    Mavlink消息包解析
    Mavlink 协议 理解
    极飞P20农业无人机多机协同作业飞行
    如何下载最新的固件到Pixhawk
    韦东山笔记之用busybox构建根文件系统
    Visual studio 打包程序时添加自定义的系统必备组件
    MFC 编译链接错误:unresolved external symbol
    在Visual studio 2017中使用EF6连接MySQL
  • 原文地址:https://www.cnblogs.com/w-w-t/p/11691968.html
Copyright © 2020-2023  润新知