1、素数筛
#include<bits/stdc++.h>
#define maxn 10010
using namespace std;
int isPrime[maxn];
void db(){
for(int i=2;i<=maxn;i++){
isPrime[i]=1;
}
for(int i=2;i<=maxn;i++){
if(isPrime[i])
for(int j=2*i;j<=maxn;j+=i)
isPrime[j]=0;
}
}
int main(){
std::ios::sync_with_stdio(false);
db();
for(int i=2;i<100;i++){
if(isPrime[i]){
cout<<i<<endl;
}
}
return 0;
}
2、最大公约数和最小公倍数
#include<bits/stdc++.h>
#define maxn 10010
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){return b>0?gcd(b,a%b):a;}
ll lcm(ll a,ll b) {return a*b/gcd(a,b);}
int main(){
std::ios::sync_with_stdio(false);
ll a=gcd(25,35);
ll b=lcm(25,35);
cout<<a<<" "<<b<<endl;
return 0;
}
3、快速幂模板
#include<bits/stdc++.h>
#define maxn 10010
using namespace std;
typedef long long ll;
ll poww(ll a,ll n,ll mod){
ll res=1;
while(n>0){
if(n%2==1){
res=res*a%mod;
}
a=a*a%mod;
n=n/2;
}
return res;
}
int main(){
std::ios::sync_with_stdio(false);
ll a=poww(3,3,100);
cout<<a<<endl;
return 0;
}
4、二分查找
while(base<=top){
mid=(base+top)/2;
int tmp=strcmp(pe[mid].no,s);
if(tmp>0){
top=mid-1;
}
else if(tmp<0){
base=mid+1;
}
else{
flag=1;
break;
}
}
if(!flag) cout<<"No Answer!"<<endl;
else{
cout<<pe[mid].no<<" "<<pe[mid].name<<" "<<pe[mid].se<<" "<<pe[mid].age<<endl;
}
5、大数
import java.math.BigInteger;
import java.util.Scanner;
class Main {
public static void main(String[] args){
Scanner cin=new Scanner(System.in);
int T;
T=cin.nextInt();
int n;
for(int i=0;i<T;i++){
n=cin.nextInt();
BigInteger ans=BigInteger.ONE;
for(int j=0;j<n;j++){
ans=ans.multiply(BigInteger.valueOf(2));
}
System.out.println(ans);
}
}
}