首页 > 其他 > 详细

小小模板

时间:2015-11-27 21:53:14      阅读:342      评论:0      收藏:0      [点我收藏+]
//手动扩栈
#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 }

 

小小模板

原文:http://www.cnblogs.com/zuferj115/p/5001644.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!