『嗨威說』常見的C++函數模板整理(一)

来源:https://www.cnblogs.com/winniy/archive/2019/02/26/10440997.html
-Advertisement-
Play Games

開學兩天,身上的職責直接變為兩個班班長,三個小組組長,哇這事情估計夠我忙活了,想躲都躲不掉啊,看來我還是真招人推薦各種管理職務啊,以後要是有人推薦我當經理啊領導啊該多好哈哈哈哈。記得今天奶奶生日,很開心地給奶奶打了一通電話,這怕是我第一次給奶奶電話送生日祝福了哈哈哈,是啊,很想珍惜身邊的人,但很多時 ...


  開學兩天,身上的職責直接變為兩個班班長,三個小組組長,哇這事情估計夠我忙活了,想躲都躲不掉啊,看來我還是真招人推薦各種管理職務啊,以後要是有人推薦我當經理啊領導啊該多好哈哈哈哈。記得今天奶奶生日,很開心地給奶奶打了一通電話,這怕是我第一次給奶奶電話送生日祝福了哈哈哈,是啊,很想珍惜身邊的人,但很多時候卻一心想提高自己地能力而忽視了身邊人,就這四年,就這四年好好提升自己,畢業出來一定要好好陪陪家裡祖輩親戚們。

  今天有點特殊,我整理了一下學到這麼久編程以來的一些模板和技巧,雖然還沒整理完,就作為(一)吧,後面會慢慢更新(其實是今天解不出難題哭了,一天一道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("\n");
    }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\n",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); //獲得長度

 

 

   前陣子的一些小模板,積累了起來,貼在博客就方便自己或者有需要的人使用啦~ 我會繼續更新這些比較實用常用的小模板呢~ 如有錯誤,希望評論指正喲~ 互相幫助才能更加成長~

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 摘要 之前老是聽說動態代理,一直沒有機會好好看過,現在就把動態代理的實現邏輯和用處整理一下。首先提兩個概念,委托類和代理類。委托類就是實際業務邏輯的處理者,代理類是處於請求發起者與委托類之間的角色,所有對委托類的請求都會經過代理類。就是委托類將請求處理委托給代理類,代理類可以起到方法攔截、功能增強的 ...
  • 一、背景 程式的定義:程式=數據+演算法+介面 二、常用技巧 技巧1 - 按目標設計介面做冪等設計 - 場景 背景:做任務賺積分。前端發出增加積分請求,如果收不到響應會重試。 後臺開發人員:怎麼判斷是重試還是另一次請求? 解決方案:介面定義中需要傳入原來積分是多少,增加到多少。開發人員直接將目標結果入 ...
  • 題意 "題目鏈接" Sol 這題就是一個很顯然的貪心。。。 首先二分一個答案,然後check是否可行。check的時候我們需要對每個位置$i$,維護出所有左端點在$i$左側,右端點在$i$右側的所有區間。最優策略一定是加右端點最遠的。 然後就做完了, 複雜度$O(nlogn)$ cpp includ ...
  • 1111 ...
  • 11 ...
  • 一、綜述 類是我們自己定義的數據類型(新類型) 設計類時要考慮的角度: (1)站在設計和實現者的角度來考慮 (2)站在使用者的角度來考慮 (3)父類,子類 二、類基礎 (1)一個類就是一個用戶自己定義的數據類型,把類可以想象為一個命名空間,包著一堆東西(成員函數,成員變數)。 (2)一個類的構成:成 ...
  • 人生苦短,我用 Python —— Life is short, you need Python 目標 Python 的起源 Python 解釋器 是用 C 語言實現的,並能夠調用 C 語言的庫文件. Python(蟒蛇) 為什麼要用 Python? Python 的特點 Python 是完全面向對 ...
  • 策略模式 雖然我本人比較討厭一些很官方的術語定義,因為我經常弄不明白有些定義講了個啥,但是為了讓這篇博文顯得不那麼輕浮,所以我也就不能免俗的先將設計模式之策略模式的定義首先丟到各位看官面前。 策略模式定義了演算法族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化獨立於使用演算法的客戶。 第一眼 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...