zoukankan      html  css  js  c++  java
  • HDU_1085 Holding BinLaden Captive!(生成函数)

      /*按照母函数的思路,然后模拟三个括号相乘的过程。因为题目已经限定好了硬币只能
    是1、2、5。

    所以可以写成:
    (1 + X + X^2 + ...)(1 + X^2 + X^4 + X^6 + ...)(1 + X^5 + X^10 + X^15 + ...)
    其中三个括号元素的个数分别是输入的num_1, num_2, num_3。然后就是模拟多项式相乘了。
    */

    //ps:代码有点水,一步一步乘的,反正就三个括号,费不了多大劲,^_^

    //My Code:

    #include <iostream>
    #include <cstring>
    #include <cstdio>

    using namespace std;

    const int N = 10000;

    int c1[N], c2[N];

    int main() {
    //freopen("data.in", "r", stdin);

    int num_1, num_2, num_3;
    int i, j, k, sum;
    while(cin >> num_1 >> num_2 >> num_3) {
    if(!num_1 && !num_2 && !num_3) break;
    memset(c1, 0, sizeof(c1));
    memset(c2, 0, sizeof(c2));
    //1
    for(i = 0; i <= num_1; i++) {
    c1[i] = 1; c2[i] = 0;
    }
    sum = num_1 + 2*num_2;
    //2
    for(j = 0; j <= num_1; j++) {
    for(k = 0; k <= 2*num_2; k += 2) {
    c2[k+j] += c1[j];
    }
    }
    for(j = 0; j <= sum; j++) {
    c1[j] = c2[j]; c2[j] = 0;
    }
    //5
    for(j = 0; j <= sum; j++) {
    for(k = 0; k <= 5*num_3; k += 5) {
    c2[k+j] += c1[j];
    }
    }

    for(j = 0; j <= sum + 5*num_3; j++) {
    if(c2[j] == 0) break;
    }
    printf("%d\n", j);
    }
    return 0;
    }
  • 相关阅读:
    排序算法比较
    直接选择排序
    静态查找表和动态查找表
    memset函数
    二叉树
    使用vue+Element的Upload+formData实现图片传到SpringBoot,再上传到fastdfs
    vue中的export与export default的区别
    人人开源
    SpringBoot注解
    大厂薪资
  • 原文地址:https://www.cnblogs.com/vongang/p/2261796.html
Copyright © 2011-2022 走看看