zoukankan      html  css  js  c++  java
  • [usaco]Humble Numbers

    题意:给你一个由n(1-100)素数组成的集合,问你第m(1-100000)大个所有质因子都来自于这个集合的合数是多少。。

    解题思路:两种思路:1)bfs + 优先队列。   2) 直接枚举(已知第k大,找k+1大的数只需要找 质数乘前k个数的最小值,这里不用每次都乘,只需要维持一个 每个质数的现在乘到多少的数组即可)

    解题代码:

     1 // File Name: humble.c
     2 // Author: darkdream
     3 // Created Time: 2014年01月14日 星期二 15时51分00秒
     4 /*
     5 ID: dream.y1
     6 PROG: humble
     7 LANG: C++
     8 */
     9 #include<stdio.h>
    10 #include<string.h>
    11 #include<stdlib.h>
    12 #include<time.h>
    13 #include<math.h>
    14 long long  num[100005];
    15 int hs[104];
    16 int a[104];
    17 int main(){ 
    18    freopen("humble.in","r",stdin);
    19    freopen("humble.out","w",stdout);
    20   int n ,m; 
    21   scanf("%d %d",&n,&m);
    22   for(int i =1;i <= n;i ++)
    23       scanf("%d",&a[i]);
    24   num[0] = 1; 
    25   for(int i =1;i <= m;i ++)
    26   {
    27       long long min = num[i-1] * a[1];
    28       for(int j =1; j <= n;j ++)
    29       {
    30 
    31         while(1ll* a[j] * num[hs[j]] <= 1ll*num[i-1])
    32         {
    33             hs[j] = hs[j] + 1;
    34         }
    35         if(a[j] * num[hs[j]] <= min )
    36             min = a[j] * num[hs[j]];
    37       }
    38       num[i] = min;
    39   }
    40   printf("%lld
    ",num[m]);
    41   return 0 ;
    42 }
    View Code
    没有梦想,何谈远方
  • 相关阅读:
    dex文件格式三
    神庙逃亡破解分析
    MySQL优化
    Redis AOF和RDB
    KD树
    关系型和非关系型数据库
    数据库实现分布式锁
    单点登录
    数据库树形结构查询
    层次遍历递归和非递归方法
  • 原文地址:https://www.cnblogs.com/zyue/p/3519523.html
Copyright © 2011-2022 走看看