1.什么是互质数?
两个数的最大公约数是1。
1与任何数都互质。
2.哥德巴赫猜想
任一大于2的整数都可写成两个质数之和。
3.判断闰年的条件?
if((year%4==0&&year%100!=0)||year%400==0)
return 1;
return 0;
4.邻接表模板
void build(int x,int y,int z)
{ //点x到y的路径距离为z
nx[head]=f[x];//head的下一个结点是f[x]
f[x]=head; //head表示路径的标号,x是head这条路的开始
s[head]=z; //head这条路径的权值
to[head++]=y;//下一个结点指向y
}
5.数字全排列
#include"stdio.h"
int a[1000],book[1000],n;
void dfs(int step)
{
int i;
if(step==n+1)
{
for(i=1;i<=n;i++)
printf("%d",a[i]);
printf("\n");
return;
}
for(i=1;i<=n;i++)
{
if(book[i]==0)
{
a[step]=i;
book[i]=1;
dfs(step+1);
book[i]=0;
}
}
return;
}
int main()
{
scanf("%d",&n);
dfs(1);
return 0;
}
6.字母全排列
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
char a[100];
while(~scanf("%s",a))
{
int l=strlen(a);
do
{
printf("%s\n",a);
}while(next_permutation(a,a+l));
}
printf("\n");
return 0;
}
7.求最大公约数的更简单法
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
int a,b;
scanf("%d %d",&a,&b);
int c=__gcd(a,b);
printf("%d\n",c);
return 0;
}
8.欧拉函数
在数论,对正整数n,欧拉函数是求小于n的正整数中与n互质的数的数目
void euler()
{
for(int i=1;i<=n;i++)
ph[i]=i;
for(int i=2;i<=n;i++)
{
if(ph[i]==i)
{
for(int j=i;j<=n;j+=i)
{
ph[j]=ph[j]/i*(i-1);
}
}
}
}