zoukankan      html  css  js  c++  java
  • 面试随缘刷题--day5

    快速幂

    就是log减少计算,在指数是偶数的时候直接指数除2的结果相乘mod就行,奇数就底数乘以指数-1的结果

    注意mod是%不要手残直接写mod

    底数b有可能是0的,要特判

    经典二分

    #include<stdio.h>
    int getnum(int b,int p,int k)
    {
        if(b==0||k==0)
            return 0;
        if(p==0)
            return 1;
        if(p%2)
            return (getnum(b,p-1,k)*b%k);
        long long temp=getnum(b,p/2,k);
        return temp*temp%k;
    }
    int main()
    {
        int  b,p,k;
        scanf("%d %d %d",&b,&p,&k);
        int ans=getnum(b%k,p,k);
        printf("%d^%d mod %d=%d",b,p,k,ans);
        return 0;
    }
    View Code

    归并排序

    注意内部归并好以后,要记得把temp的值还给a,递归和非递归都有

    #include<stdio.h>
    #include<algorithm>
    #include<math.h>
    using namespace std;
    int n;
    int a[100005];
    void merge(int a[],int left1,int right1,int left2,int right2)
    {
        int temp[100005];
        int len=0;
        int l1=left1;
        int l2=left2;
        while(l1<=right1 && l2<=right2)
        {
            if(a[l1]<=a[l2])
                temp[len++]=a[l1++];
            else
                temp[len++]=a[l2++];
        }
        while(l1<=right1)
            temp[len++]=a[l1++];
        while(l2<=right2)
            temp[len++]=a[l2++];
        for(int i=0;i<=len-1;i++)
            a[left1+i]=temp[i];
    }
    void mergeSort(int a[],int left,int right)
    {
        if(left>=right)
            return;
        int mid=(left+right)/2;
        mergeSort(a,left,mid);
        mergeSort(a,mid+1,right);
        merge(a,left,mid,mid+1,right);
    }
    void mergeSort2(int a[])
    {
        for(int step=2;step/2<=n;step=step*2)
        {
            for(int i=0;i<=n-1;i=i+step)
            {
                int mid=i+step/2-1;
                if(mid+1<n)
                merge(a,i,mid,mid+1,min(i+step-1,n-1));
            }
        }
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=0;i<n;i++)
            scanf("%d",&a[i]);
        mergeSort2(a);
        for(int i=0;i<n;i++)
            printf("%d ",a[i]);
        return 0;
    }
    View Code
    时间才能证明一切,选好了就尽力去做吧!
  • 相关阅读:
    支付宝在ios应用上的开发[转]
    检查设备摄像头、指南针、录像、陀螺仪的状态
    iOS APP AppIcon& LaunchImage
    Crashlytics功能集成
    Email-Ext Plugin install ------ Jenkins Plugins
    瑜伽第一篇
    iOS Font
    导出android真机上应用的apk文件
    生成一个ipa的包,使非开发机也能安装成功 (Xcode5.1)
    How to use Jenkins
  • 原文地址:https://www.cnblogs.com/tingxilin/p/13493270.html
Copyright © 2011-2022 走看看