zoukankan      html  css  js  c++  java
  • uva 10375

      1  /*  选择与除法_________________________________________________________________________________
      2                         
      3                           #include <iostream> 
      4                           #include <map> 
      5                           #include <cmath>
      6                           #include <vector>
      7                           #include <cstdio>
      8                           #include <string>
      9                           #include <cstring> 
     10                           #include <algorithm>    
     11                           using namespace std; 
     12                           #define fir first
     13                           #define sec second
     14                           #define pb(x) push_back(x) 
     15                           #define mem(A, X) memset(A, X, sizeof A)
     16                           #define REP(i,l,u) for(int (i)=(int)(l);(i)<=(int)(u);++(i))
     17                           #define rep(i,l,u) for(int (i)=(int)(l);(i)>=(int)(u);--(i)) 
     18                           #define foreach(e,x) for(__typeof(x.begin()) e=x.begin();e!=x.end();++e) 
     19                           typedef long long LL;   
     20                           typedef unsigned long long ull;
     21                           typedef pair<long,long>  pll;     
     22                           
     23                           
     24                           LL T,n;
     25                           const int mod=1e9+7; 
     26                           const int maxn=10000;    
     27                           int num[maxn+1];
     28 const int SIZE=1e5+300;//1e6;   
     29                             bool isprime[SIZE];// filter[i]=true 表示i是素数.  筛选的范围是  0,1,2,... SIZE-1.  共SIZE个.    如果想筛0到7的素数,就把SIZE定为7+1;(因为总是多了个0)
     30                             void primefilte()  
     31                             {  
     32 
     33                               for(int i=0;i<=1;i++) isprime[i]=false;
     34                               for (int i=2; i<=SIZE; i++)
     35                                {
     36                                 if(i & 1 || i==2) isprime[i] = true;
     37                                 else isprime[i] = false;
     38                               }
     39 
     40                               for (int i=3; i<=(int)sqrt((long double)SIZE); i++)  
     41                               {  
     42                                 if (isprime[i])  
     43                                 {  
     44                                   int j = i*2;  
     45                                   while (j<=SIZE)  
     46                                   {  
     47                                     if (isprime[j])  
     48                                       isprime[j] = false;  
     49                                     j+=i;  
     50                                   }  
     51                                 }  
     52                               }  
     53                                                                                           //for (int i=2; i<=SIZE-1; i++)  
     54                                                                                            // if (isprime[i]) printf("%d ",i);  
     55                             } 
     56 
     57                           vector<int> base;
     58                           void addint(int n,int p)
     59                           {
     60                               REP(i,0,base.size()-1)
     61                               {
     62                                   while(n%base[i]==0) 
     63                                       {
     64                                           num[i]+=p; 
     65                                           n/=base[i];
     66                                       }
     67                               }
     68                           }
     69                           void addf(int n,int p)
     70                           {
     71                               //rep(i,n,2)
     72                                //num[i]+=p;
     73                               REP(i,2,n)
     74                               addint(i,p);
     75                           }
     76                           int main()
     77                           {
     78                                freopen("in.txt","r",stdin); 
     79                                //while(cin>>n)
     80 
     81                                primefilte();
     82                                REP(i,2,10000)
     83                                if(isprime[i]) base.pb(i);
     84 
     85                                int p,q,r,s;
     86                                while(cin>>p>>q>>r>>s)
     87                                { 
     88                                  //REP(kase,1,T)  { }
     89                                  mem(num,0);
     90                                  addf(p,1);
     91                                  addf(s,1);              
     92                                  addf(r-s,1);              
     93                                  addf(p-q,-1);     
     94                                  addf(q,-1);     
     95                                  addf(r,-1);
     96                                  double ans=1;
     97                                  REP(i,0,base.size()-1)
     98                                   ans*=pow(base[i],num[i]);              
     99                                  printf("%.5lf
    ",ans);
    100                                }
    101                             return 0;
    102                           }
    103               
    104                          /*
    105                             note    :  有一个地方:刚开始直接用的1 2 3 ... 10000作的基(写起来简单),出错了,
    106                                         因为这样表示太浪费,损失了精度(几乎每次计算都是很小的数计算,误差增大),
    107                                         于是希望稠密表示,减少误差,唯一分解定理(单次计算数字增大),使得误差降低.
    108                             debug   :  代码除了模板其他的代码不要复制,不然易出错.应该重新写
    109                             optimize:
    110                           */ 
  • 相关阅读:
    非重复随机序列生成算法
    IE浏览器整页截屏程序
    地铁线路图的设计与实现
    拓扑排序算法的一个应用
    洛谷 P4450 双亲数
    洛谷 P2183 [国家集训队]礼物
    洛谷 P4159 [SCOI2009]迷路
    CF86D Powerful array
    Catalan数
    SP3266 KQUERY Kquery
  • 原文地址:https://www.cnblogs.com/paulzjt/p/6052663.html
Copyright © 2011-2022 走看看