暑假(补)-1

2020-04-16 11:08:26 浏览数 (1)

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;
 }

0 人点赞