『嗨威说』常见的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("\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); //获得长度

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

原文地址:https://www.cnblogs.com/winniy/p/10440997.html

时间: 2024-07-28 13:24:14

『嗨威说』常见的C++函数模板整理(一)的相关文章

『嗨威说』算法设计与分析 - 算法第二章上机实践报告(二分查找 / 改写二分搜索算法 / 两个有序序列的中位数)

本文索引目录: 一.PTA实验报告题1 : 二分查找 1.1 实践题目 1.2 问题描述 1.3 算法描述 1.4 算法时间及空间复杂度分析 二.PTA实验报告题2 : 改写二分搜索算法 2.1 实践题目 2.2 问题描述 2.3 算法描述 2.4 算法时间及空间复杂度分析 三.PTA实验报告题3 : 两个有序序列的中位数 3.1 实践题目 3.2 问题描述 3.3 算法描述 3.4 算法时间及空间复杂度分析 四.实验心得体会(实践收获及疑惑) 一.PTA实验报告题1 : 二分查找 1.1 实践

『嗨威说』算法设计与分析 - PTA 数字三角形 / 最大子段和 / 编辑距离问题(第三章上机实践报告)

本文索引目录: 一.PTA实验报告题1 : 数字三角形 1.1 实践题目 1.2 问题描述 1.3 算法描述 1.4 算法时间及空间复杂度分析 二.PTA实验报告题2 : 最大子段和 2.1 实践题目 2.2 问题描述 2.3 算法描述 2.4 算法时间及空间复杂度分析 三.PTA实验报告题3 : 编辑距离问题 3.1 实践题目 3.2 问题描述 3.3 算法描述 3.4 算法时间及空间复杂度分析 四.实验心得体会(实践收获及疑惑) 一.PTA实验报告题1 : 数字三角形 1.1 实践题目: 1

『嗨威说』算法设计与分析 - 动态规划思想小结(HDU 4283 You Are the One)

本文索引目录: 一.动态规划的基本思想 二.数字三角形.最大子段和(PTA)递归方程 三.一道区间动态规划题点拨升华动态规划思想 四.结对编程情况 一.动态规划的基本思想: 1.1 基本概念: 动态规划算法简单说,利用拆解问题思想,定义问题状态和状态之间的关系,使得问题能够以递推或者是分治的方式去解决. 动态规划算法的基本思想与分治法很相似,将待求解的问题分解为若干个子问题,前一子问题的解,为后一子问题的求解所依赖.在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解

『编程题全队』团队作业6——展示博客

1.团队成员的简介和个人博客地址,团队的源码仓库地址. 团队成员: 孙志威(201521123077): 简介:组长,编程题全队首脑,主要负责前端开发和项目统筹规划实施 博客地址:https://home.cnblogs.com/u/agts 孙慧君(201521123098): 简介:组长助理,编程题全队队宠,主要负责前端开发和UI设计 博客地址:https://home.cnblogs.com/u/niverse745 倪兢飞(201521123061): 简介:队员,编程题全队颜值当担,主

首届中国域名节落户深圳,『创新之都』再迎浪潮

深圳享有得天独厚的地理位置优势,在交通.经济发展.气候和文化影响等方面,深圳亦比其他城市更有着发展潜力.特别在随着改革开放的脚步之后,深圳在贸易.信息技术建设等方面亦上升到新的高度,这些源自环境.人文和政治等多方面的因素,都无一例外地使得深圳成为一个仅次于北京和上海之后的新型内陆城市,正迎来全新的发展时机.这些天然优势因素的集合,都使得深圳作为一个朝气蓬勃的城市,在即将到来的信息时代里,可以全方面发展经济与文化之外的信息技术.互联网商业效应等模式. 即将于12月19日在深圳举行的首届中国域名节,

『HTML5挑战经典』是英雄就下100层-开源讲座(二)危险!英雄

本篇为<『HTML5挑战经典』是英雄就下100层-开源讲座>第二篇,需要用到开源引擎lufylegend,可以到这里下载: 下载地址:http://lufylegend.googlecode.com/files/lufylegend-1.7.1.rar API文档:http://lufylegend.com/lufylegend/api 却说我们的英雄能顺利地从天而降了,不过丝毫没有悬念,他一定会被摔死的,因为还没有跳板出现.我每次路过时都看到我们的英雄是边下降边大叫:help! help!然

C++ Super-FAQ 『Classes and Objects』

类是什么 Type由一组状态和能在多种状态间变换的操作组成: Class提供一组操作和一组数据用于描述type对象的抽象概念. 类接口设计原则 『simplified view』:有意识地隐藏不必要的细节,减少用户出错的几率:『vocabulary of usesrs』 :减少用户学习曲线. 封装是什么 封装是为了阻止未经授权的信息和功能访问. 封装是将代码分为stable和volatile两部分.volatile parts是实现细节,stable parts是接口. Encapsulatio

『行式报表』通过方法对数据进行过滤

(关于Scriptcase产品,请查看 http://www.phpscriptcase.com 查看相关功能) Scriptcase提供了方便的方式直接创建行式报表,可以一键生成简单.直接的报表.Scriptcase会根据数据机构,自动判断其数据类型,并且生成相应格式的字段(如整形.字符型.图片型等等). 使用Scriptcase创建行式报表虽然方便,但是实际的工作中我们一定会遇到这样的问题: 当前用户只允许查看自己的记录: 组管理员(或者部门管理员)允许查看本组(部门)的数据,对自己的数据可

2017-2018-2 20155303『网络对抗技术』Exp5:MSF基础应用

2017-2018-2 20155303『网络对抗技术』Exp5:MSF基础应用 --------CONTENTS-------- 一.原理与实践说明 1.实践内容 2.预备知识 3.基础问题 二.实践过程记录 1.Windows服务渗透攻击--MS08-067安全漏洞 2.浏览器渗透攻击--MS11-050 3.针对Office软件的渗透攻击--MS10-087 4.针对Adobe Reader软件的渗透攻击--adobe_toolbutton 5.快捷方式图标漏洞--ms10-046 6.M