水模板

//手动扩栈
#pragma comment(linker, "/STACK:102400000,102400000")
 1 //线性素数筛
 2 
 3 #define N 10005
 4 int tag[N+5],p[N+5];
 5 bool pri[N+1];
 6 void get_prime()
 7 {
 8     memset(tag,0,sizeof(tag));
 9     int cnt=0;
10     for(int i=2;i<N;i++)
11     {
12         if(tag[i]==0) {p[cnt++]=i;pri[i]=1;}
13         for(int j=0;j<cnt&&p[j]*i<N;j++)
14         {
15             tag[i*p[j]]=1;
16             if(i%p[j]==0) break;
17         }
18     }
19 }
 1 //快速幂
 2 
 3 long long powx(int a,int b,int c)
 4 {
 5     long long re=1;
 6     while (b)
 7     {
 8         if (b&1) re=(re*a)%c;
 9         a=(a*a)%c;
10         b>>=1;
11     }
12     return re;
13 }
 1 //欧拉函数
 2 
 3 int Euler(int n)
 4 {
 5     int ans=n,i;
 6     for(i=2;i*i<=n;i++)
 7     {
 8         if(n%i==0)
 9         {
10             ans-=ans/i;
11             while(n%i==0)
12             {
13                 n/=i;
14             }
15         }
16     }
17     if(n>1) ans-=ans/n;
18     return ans;
19 }
20 
21 //打表
22 
23 int phi[MAX];
24 void init()
25 {
26     int i,j;
27     memset(phi,0,sizeof(phi));
28     phi[1]=1;
29     for(i=2;i<MAX;i++)
30     {
31         if(phi[i]==0)
32         {
33             for(j=i;j<MAX;j+=i)
34             {
35                 if(phi[j]==0) phi[j]=j;
36                 phi[j]-=phi[j]/i;
37             }
38         }
39     }
40     return ;
41 }
1 //组合数
2 
3 __int64 C(__int64 n,__int64 m)
4 {
5     __int64 ans=1,i;
6     for(i=1;i<=m;i++)
7         ans=ans*(n-i+1)/i;
8     return ans;
9 }

 输入挂

 1 //整数
 2 inline bool scan_d(int &num)  
 3 {
 4         char in;bool IsN=false;
 5         in=getchar();
 6         if(in==EOF) return false;
 7         while(in!='-'&&(in<'0'||in>'9')) in=getchar();
 8         if(in=='-'){ IsN=true;num=0;}
 9         else num=in-'0';
10         while(in=getchar(),in>='0'&&in<='9'){
11                 num*=10,num+=in-'0';
12         }
13         if(IsN) num=-num;
14         return true;
15 }
 1 //实数
 2 inline bool scan_lf(double &num)  
 3 {
 4         char in;double Dec=0.1;
 5         bool IsN=false,IsD=false;
 6         in=getchar();
 7         if(in==EOF) return false;
 8         while(in!='-'&&in!='.'&&(in<'0'||in>'9'))
 9                 in=getchar();
10         if(in=='-'){IsN=true;num=0;}
11         else if(in=='.'){IsD=true;num=0;}
12         else num=in-'0';
13         if(!IsD){
14                 while(in=getchar(),in>='0'&&in<='9'){
15                         num*=10;num+=in-'0';}
16         }
17         if(in!='.'){
18                 if(IsN) num=-num;
19                 return true;
20         }else{
21                 while(in=getchar(),in>='0'&&in<='9'){
22                         num+=Dec*(in-'0');Dec*=0.1;
23                 }
24         }
25         if(IsN) num=-num;
26         return true;
27 }
原文地址:https://www.cnblogs.com/zuferj115/p/5001644.html