zoukankan      html  css  js  c++  java
  • HDU 4345

    细心点想,就明白了,题目是求和为N的各数的最小公倍数的种数。其实就是求N以内的各素数的不同的组合(包含他们的次方),当然,是不能超过N的。用Dp能解决。和背包差不多。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <algorithm>
     5 #include <cmath>
     6 #define N 1010
     7 #define LL __int64
     8 using namespace std;
     9 
    10 LL dp[N];
    11 
    12 int prim[N],np;
    13 bool isprime[N];
    14 
    15 void init(){
    16     np=0;
    17     memset(isprime,true,sizeof(isprime));
    18     for(int i=2;i<N;i++){
    19         if(isprime[i]){
    20             prim[++np]=i;
    21             for(int j=i*i;j<N;j+=i)
    22             isprime[j]=false;
    23         }
    24     }
    25 }
    26 
    27 int main(){
    28     init();
    29     int n,tmp;
    30     while(scanf("%d",&n)!=EOF){
    31         for(int i=0;i<=n;i++)
    32         dp[i]=1LL;
    33         bool flag=false;
    34         for(int k=1;k<=np;k++){
    35             if(prim[k]>n) break;
    36             for(int i=n;i>=0;i--){
    37                 tmp=prim[k];
    38                 while(i-tmp>=0){
    39                     dp[i]+=dp[i-tmp];
    40                     tmp*=prim[k];
    41                 }
    42             }
    43         }
    44         printf("%I64d
    ",dp[n]);
    45     }
    46     return 0;
    47 }
  • 相关阅读:
    springbatch入门练习(第一篇)
    rabbitmq安装错误集
    动态代理和反射概念剖析
    RPC使用rabbitmq实现
    spring amqp初步了解
    aips初步设想
    静态工厂方法和实例工厂方法及普通的bean
    HDU4403(暴搜)
    CodeForces 446B
    HDU5505
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/4149458.html
Copyright © 2011-2022 走看看