• 『嗨威说』常见的C++函数模板整理(一)


      开学两天,身上的职责直接变为两个班班长,三个小组组长,哇这事情估计够我忙活了,想躲都躲不掉啊,看来我还是真招人推荐各种管理职务啊,以后要是有人推荐我当经理啊领导啊该多好哈哈哈哈。记得今天奶奶生日,很开心地给奶奶打了一通电话,这怕是我第一次给奶奶电话送生日祝福了哈哈哈,是啊,很想珍惜身边的人,但很多时候却一心想提高自己地能力而忽视了身边人,就这四年,就这四年好好提升自己,毕业出来一定要好好陪陪家里祖辈亲戚们。

      今天有点特殊,我整理了一下学到这么久编程以来的一些模板和技巧,虽然还没整理完,就作为(一)吧,后面会慢慢更新(其实是今天解不出难题哭了,一天一道acm都要死了,可能自己训练量和能力远远不够吧,所以渣渣了,努力努力!)

    今日推荐:

      今天心情很糟糕,每次心情很烂的时候总会去听听自己最最最喜欢的歌曲没有之一,去激励自己走出烂心情,希望读到这篇博客的读者们,也能轻松摆脱自己的烂心情,笑对人生~

    《于是》 - 邓紫棋

      既然回不去了 我还在烦恼什么
      于是告诉自己不要哭
      我不要哭 我不能哭
      往前方的路走一步
      再走一步 就会幸福
      成长要学会独处
      虽然有一点孤独
     

    链接:https://music.163.com/#/song?id=36198060&autoplay=true&market=baiduhd

    (-> 001)分割数值(倒序输出)模板:

    #include<iostream>
    using namespace std;
    int main()
    {
        int num,k;
        cin >> num;
        while(num>0)
        {
            k = num % 10;
            cout<<k<<" ";
            num = num / 10;
        }
    }

    (-> 002)求A、B的最大公约数:

        法一:

    long long gcd(long long m, long long n)
    {
        return (m==0)?n:gcd(n%m, m);
    }

        法二:

    int gcd(int big, int small)
    {
        if (small > big) swap(big, small);
        int temp;
        while (small != 0){ //  辗转相除法
            if (small > big) swap(big, small);
            temp = big % small;
            big = small;
            small = temp;
        }
        return(big);
    }

    (-> 003)求A与B的最小公倍数。 与上面函数配合使用。

    long long lcm(long long a, long long b)
    {
       return a / gcd(a, b) * b;
    }

    (-> 004)判断素数的方法:

        法一:

    bool Sushu(int num)
    {
        int sqrtO,test = 0;
        sqrtO = sqrt(num);
        for(int i = 2;i<=sqrtO;i++)
        {
            if(num%i==0) break;
            else test++;
        }
        if(test == (sqrtO -1)) return 1;
        else return 0;
    }

        法二:

    bool judge(int x){
        for(int i=2;i<sqrt(x);i++)
            if(x%i==0)
                return false;
        return true;
    }

    (-> 005)全排列输出:

    void Pern(int list[], int k, int n) {   //  k表示前k个数不动仅移动后面n-k位数
        if (k == n - 1) {
            for (int i = 0; i < n; i++) {
                printf("%d", list[i]);
            }
            printf("
    ");
        }else {
            for (int i = k; i < n; i++) {   //  输出的是满足移动条件所有全排列
                swap(list[k], list[i]);
                Pern(list, k + 1, n);
                swap(list[k], list[i]);
            }
        }
    }

    (-> 006)向量工具:

    struct node {  
        double x; // 横坐标  
        double y; // 纵坐标  
    };  
    
    typedef node Vector;
    
    Vector operator + (Vector A, Vector B) { return Vector(A.x + B.x, A.y + B.y); }  
    Vector operator - (Point A, Point B) { return Vector(A.x - B.y, A.y - B.y); }  
    Vector operator * (Vector A, double p) { return Vector(A.x*p, A.y*p); }  
    Vector operator / (Vector A, double p) { return Vector(A.x / p, A.y*p); }  
    
    double Dot(Vector A, Vector B) { return A.x*B.x + A.y*B.y; } // 向量点乘  
    double Length(Vector A) { return sqrt(Dot(A, A)); }  // 向量模长  
    double Angle(Vector A, Vector B) { return acos(Dot(A, B) / Length(A) / Length(B)); }  // 向量之间夹角  
    
    double Cross(Vector A, Vector B) { // 叉积计算 公式  
        return A.x*B.y - A.y*B.x;  
    }  
    
    Vector Rotate(Vector A, double rad) // 向量旋转 公式  {  
        return Vector(A.x*cos(rad) - A.y*sin(rad), A.x*sin(rad) + A.y*cos(rad));  
    }  
    
    Point getLineIntersection(Point P, Vector v, Point Q, Vector w) { // 两直线交点t1 t2计算公式   
        Vector u = P - Q;   
        double t = Cross(w, u) / Cross(v, w);  // 求得是横坐标  
        return P + v*t;  // 返回一个点  
    }  

    (-> 007)组合公式:

    long long int C(int m,int n) {
        int k=1;//相当于C(m,n)
        long long int ans=1;
        while(k<=n) {
            ans=((m-k+1)*ans)/k;
            k++;
        }
        return ans;
    } 

    (-> 008)大数阶乘公式:

    string bigFactorial(int n){
        int ans[maxn],digit = 1;
        ans[0] = 1;
        for(int i = 2; i <= n; i++){
            int num = 0;
            for(int j = 0; j < digit; j++){
                int temp = ans[j]*i + num;
                ans[j] = temp%10;
                num = temp/10;
            }
            while(num != 0){
                ans[digit] = num%10;
                num /= 10;
                digit++;
            }
        }
        string str = "";
        for(int i = digit-1; i >= 0; i--)
            str += ans[i] + '0';
        return str;
    }

    (-> 009)杨辉三角打印:

    #include<iostream>
    #include<cstdlib>
    using namespace std;
    long long int s=1;
    long long int h,i,j;
    
    int main()
    {
        while(cin>>h)
        {
            cout<<"1"<<endl;
            for (i = 2; i <= h; s= 1, i++)
            {
                cout<<"1 ";
                for (j = 1; j <= i - 2; j++)
                {
                    cout<<(s = (i - j) * s / j)<<" ";
                }
                cout<<"1"<<endl;
            }
            cout<<endl;
        }
        return 0;
    } 

    (-> 010)其他整理:

        1、char c1,c2,c3的int型即为ASCII码

        2、cout << setprecision(2) << fixed << 固定精度输出

        3、printf("%.2lf ",num)用于输出double类型数据并固定精度

        4、获取需要空格输入的段落:

    char a[100];
    cin.getline(a, 100)

        5、数组a[100]的清零操作 memset(a,0,sizeof(a)); 

        6、  getchar();//把回车符吃掉,否则下一句会出错

          gets(a); //读取整行
          length=strlen(a); //获得长度

       前阵子的一些小模板,积累了起来,贴在博客就方便自己或者有需要的人使用啦~ 我会继续更新这些比较实用常用的小模板呢~ 如有错误,希望评论指正哟~ 互相帮助才能更加成长~

  • 相关阅读:
    TPCx-BB官宣最新世界纪录,阿里巴巴计算力持续突破
    Java 编程技巧之数据结构
    从零开始入门 K8s | Kubernetes 网络概念及策略控制
    从零开始入门 K8s | 可观测性:监控与日志
    如何在 Knative 中部署 WebSocket 和 gRPC 服务?
    全球首个开放应用模型 OAM 开源
    开放应用模型(OAM):全球首个云原生应用标准定义与架构模型
    一文读懂分布式架构知识体系(内含超全核心知识大图)
    更强大的实时数仓构建能力!分析型数据库PostgreSQL 6.0新特性解读
    数论练习(1)——取余运算(快速幂)
  • 原文地址:https://www.cnblogs.com/winniy/p/10440997.html
Copyright © 2020-2023  润新知