UVa 11137 Ingenuous Cubrency

原创 2015年07月10日 16:04:13

Problem I: Ingenuous Cubrency

People in Cubeland use cubic coins. Not only the unit of currency iscalled a cube but also the coins are shaped like cubes andtheir values are cubes. Coins with values of all cubic numbers up to9261 (= 213), i.e., coins with the denominations of 1, 8,27, ..., up to 9261 cubes, are available inCubeland.

Your task is to count the number of ways to pay a given amountusing cubic coins of Cubeland.For example, there are 3 ways to pay 21 cubes:twenty one 1 cube coins, orone 8 cube coin and thirteen 1 cube coins, ortwo 8 cube coin and five 1 cube coins.

Input consists of lines each containing an integer amount tobe paid. You may assume that all the amounts are positive and less than 10000.

For each of the given amounts to be paid output one line containing asingle integer representing the number of ways to pay the given amountusing the coins available in Cubeland.

Sample input

10 
21
77
9999

Output for sample input

2
3
22
440022018293

题意:

求将 n 写成若干个正整数的立方之和有多少种 种方法。


分析:

完全背包,这里假设将 n 写成若干个正整数的立方之和有d[ n ] 种方法。

状态转移方程:d[ j ] = d[ j ] + d[ j - c[ i ] ]  (c[ i ] 为 i 的立方),

要想求得d[ j ],需要从若干个正整数的立方之和为 j + c[ i ] 再加上一个立方和为 c[ i ]

的数转移而来。


代码:

#include <iostream>
#include <cstdio>
using namespace std;
const int MAXI = 21;        //22^3 > n
const int MAXN = 10000 + 5;
int c[22];
long long d[MAXN];

int main()
{
    for(int i = 1; i <= MAXI; i++) c[i] = i * i * i;
    d[0] = 1;
    for(int i = 1; i <= MAXI; i++)
        for(int j = c[i]; j <= MAXN; j++)
                d[j] += d[j - c[i]];
    int n;
    while(~scanf("%d", &n))
        cout << d[n] << endl;
    return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

UVA 11137 Ingenuous Cubrency

大意不再赘述。 思路:简单的背包问题。 #include #include #include #include using namespace std; typedef long lon...
  • Wall_F
  • Wall_F
  • 2013年01月04日 14:59
  • 550

UVA 11137 Ingenuous Cubrency

题目来源:UVA 11137 原题概述: 将n表示成多个立方数之和,问有多少种表示方式? 如:21可表示为21个1、1个8+13个1、2个8+5个1,共3种方式。 分析: 这是一道多重背包问题的变形...
  • u011276914
  • u011276914
  • 2013年09月06日 11:36
  • 434

UVa:11137 Ingenuous Cubrency

还是统计硬币组合方式的题。之前做过好几次了。 状态转移方程dp[i][j]=dp[i][j-p[i]]+dp[i-1][j]; 注意UVAlonglong要用lld。     #include #i...
  • kkkwjx
  • kkkwjx
  • 2013年09月08日 22:45
  • 615

uva 11137 Ingenuous Cubrency

uva 11137 Ingenuous Cubrency
  • tengfei461807914
  • tengfei461807914
  • 2016年02月06日 12:45
  • 178

UVA - 11137 Ingenuous Cubrency

题意:完全背包问题版的凑硬币 #include #include #include const int MAXN = 10010; long long dp[MAXN]; int arr...
  • u011345136
  • u011345136
  • 2013年09月20日 18:48
  • 536

Ingenuous Cubrency UVA 11137

递推  #include #include #include #include #include #include #include #include #include #incl...
  • gyarenas
  • gyarenas
  • 2013年01月14日 11:30
  • 408

【uva 11137】Ingenuous Cubrency

People in Cubeland use cubic coins. Not only the unit of currency is called a cube but also the coi...
  • yyx2000
  • yyx2000
  • 2017年04月05日 21:01
  • 125

uva - 11137 - Ingenuous Cubrency

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=...
  • SCNU_Jiechao
  • SCNU_Jiechao
  • 2012年11月24日 08:19
  • 807

UVA 11137 - Ingenuous Cubrency

这道题想错了方向,一直纠结于背包运行过程中忽略了一些情况,比如:要选8这个物品,当体积是8的时候我选了一个,因为存在价值为1这样的物品,这就是一种情况,但是当容量是16的时候,因为是完全背包,我又要选...
  • yuzhaoxin1008
  • yuzhaoxin1008
  • 2015年03月16日 14:04
  • 122

UVA 11137 - Ingenuous Cubrency

Problem I: Ingenuous Cubrency People in Cubeland use cubic coins. Not only the unit of currency i...
  • a1061747415
  • a1061747415
  • 2013年10月30日 00:19
  • 1149
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVa 11137 Ingenuous Cubrency
举报原因:
原因补充:

(最多只允许输入30个字)