1.sort()
(1) 数组
代码语言:javascript复制#include<algorithm>
#include<iostream>
using namespace std;
bool cmp(stu a,stu b)
{
return a < b ; //从小到大;
return a > b ;//从大到小;
}
int main()
{
int a[10]={1,5,6,8,10,22,-5,99,100,-5}
sort(a,a 10);
return 0;
}
(2)结构体
代码语言:javascript复制#include<stdio.h>
#include<algorithm>
#include<iostream>
using namespace std;
struct stu
{
int id;
char name[20];
char sex[10];
}student[10];
bool cmp(stu a,stu b)
{
return a.id < b.id ; //从小到大;
return a.id > b.id ;//从大到小;
}
int main()
{
student[0].id = 10;
student[1].id = 8;
student[2].id = 1;
student[3].id = 9;
sort(student,student 4,cmp);
for(int i=0;i<4;i )
{
printf("%dn",student[i].id);
}
printf("%d",student[0].id);
return 0;
}
(3)数据类型排序
代码语言:javascript复制#include<stdio.h>
#include<iostream>
#include<algorithm>
//#include<functional>
using namespace std;
int main()
{
int a[10]={1,10,8,11,20,0,-9,85,21,3};
char b[10] = {'b','a','z','e','t','s','p','f','o','h'};
sort(a,a 10,less<int>());
sort(a,a 10,greater<int>());
sort(b,b 10,greater<char>());
for(int i=0;i<10;i )
cout<<a[i]<<endl;
for(int i=0;i<10;i )
cout<<b[i]<<endl;
return 0;
}
2.GCD
GCD是求最大公约数,有两种方法:1.自己构建函数。2.头文件中的__gcd()函数.
代码语言:javascript复制#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
/*
int gcd(int a,int b)
{
return b ? gcd(b,a%b) : a;
}*/
int main()
{
int a,b;
cin>>a>>b;
cout<<__gcd(a,b)<<endl;
return 0;
}
3.LCM
LCM求最小公倍数,其实掌握了GCD,就简单的多了。
代码语言:javascript复制#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
int gcd(int a,int b)
{
return b ? gcd(b,a%b) : a ;
}
int main()
{
int a,b;
cin>>a>>b;
cout<<(a*b)/gcd(a,b)<<endl;
cout<<(a*b)/__gcd(a,b)<<endl;
return 0;
}
4.素数打表
素数打表根据比埃拉托斯特尼筛法,如果感兴趣,可以去找度娘。
代码语言:javascript复制#include<stdio.h>
#include<iostream>
#include<algorithm>
//#include<cstring>
//#include<string.h>
using namespace std;
int main()
{
int prim[1016];
memset(prim,0,sizeof(int)*1016);
prim[1]=1;
for(int i=2;i*i<1016;i )
{
if(!prim[i]) for(int j=i*i;j<1016;j =i)
prim[j]=1;
}
for(int i=1;i<1016;i )
{
cout<<i<<'t';
cout<<prim[i]<<endl;
}
int count = 0;
for(int i=1;i<1016;i )
{
if(prim[i]==0)
count ;
}
cout<<count<<endl;
return 0;
}
5.快速幂取模
快速幂取模,为了解决大数取模问题吧。
代码语言:javascript复制#include<stdio.h>
typedef long long ll;
#define MOD 1000000007
ll pow_mod(ll a,ll n)
{
ll res =1;
while(n)
{
if(n&1) res =res* a%MOD;
a=a*a%MOD;
n>>=1;
}
return res;
}
int main()
{
int a = 4;
int b = 6;
printf("%d",pow_mod(a,b));
return 0;
}