zoukankan      html  css  js  c++  java
  • hdu5108枚举因子求最小的m

    题意:
         给一个n(<=10Y),然后让找到一个最小的m使得n/m是一个素数.


    思路:
          先用sqrt(n)的时间把所有的因子都求出来,然后在排序,枚举,就行了,这个题目这么做的话,要是仔细算一下时间复杂度估计会跪,但是题目说大数据不多,这种说法的前提下一般临街的时间复杂度都要试一试,还有就是在判断素数和枚举的时候写的别太挫,不然很可能会超时。


    #include<algorithm>
    #include<stdio.h>
    #include<math.h>


    using namespace std;




    int YZ[100000] ,yzs;


    void DB(int now)
    {
       yzs = 0;
       int max = (int)sqrt(now);
       for(int i = 1 ;i <= max ;i ++)
       {
          if(now % i == 0) 
          {
             YZ[++yzs] = i;
             YZ[++yzs] = now / i;
          }
       }
       if(max * max == now)
       yzs --;
    }


    bool jude(int now)
    {
       int max = (int)sqrt(now);
       for(int i = 2 ;i <= max ;i ++)
       if(now % i == 0) return 0;
       return 1;
    }


    int main ()
    {
       int n ,i;
       while(~scanf("%d" ,&n))
       {
          if(n <= 1)
          {
             printf("0 ");
             continue;
          }
          DB(n);
          sort(YZ + 1 ,YZ + yzs + 1);
          int mk = 0;
          for(i = 1 ;i <= yzs && !mk;i ++)
          {
             int now = n / YZ[i];
             if(jude(now))
             {
                printf("%d " ,YZ[i]);
                mk = 1;
             }
          }
          if(!mk) printf("0 ");
       }
       return 0;
    }
                

  • 相关阅读:
    a标签 不触发 目标链接
    java Byte[] to String(hex)
    error C2664: 'BOOL (PCERT_SELECT_STRUCT_A)' : cannot convert parameter 1 from 'CERT_SELECT_STRUCT *' to 'PCERT_SELECT_STRUCT_A'
    java jni c++ 例子
    Java.io.DataInputStream.readInt()
    sso demo mysql ( cas )
    sso demo 取消https (cas)
    poj 1422 Air Raid (二分匹配)
    poj 1274 The Perfect Stall (二分匹配)
    hdu 1392 Surround the Trees (凸包)
  • 原文地址:https://www.cnblogs.com/csnd/p/12062607.html
Copyright © 2011-2022 走看看