题意:就是给出二个数N,和k,有1~k种钱币,每种都 是无限个,用这些种类的钱币可以组合成总钱N有多少种方式。
解题:这就是一个完全背包,把N看成容量,钱币的类型值为 花费和价值。与记录有多少种路径的走法一样,但要注意的是 这里输出的数据会很大,会超出long long型,所以用两个 long long 型来表示一个大数。分别是高位和低位,低位不 超过10^18,也就是有17位数。

Time limit    1000 ms

Memory limit     65536 kB

OS      Linux

Source         USACO 2006 January Silver

Farmer John goes to Dollar Days at The Cow Store and discovers an unlimited number of tools on sale. During his first visit, the tools are selling variously for $1, $2, and $3. Farmer John has exactly $5 to spend. He can buy 5 tools at $1 each or 1 tool at $3 and an additional 1 tool at $2. Of course, there are other combinations for a total of 5 different ways FJ can spend all his money on tools. Here they are:

        1 @ US$3 + 1 @ US$21 @ US$3 + 2 @ US$11 @ US$2 + 3 @ US$12 @ US$2 + 1 @ US$15 @ US$1

Write a program than will compute the number of ways FJ can spend N dollars (1 <= N <= 1000) at The Cow Store for tools on sale with a cost of $1..$K (1 <= K <= 100).

Input

A single line with two space-separated integers: N and K.

Output

A single line with a single integer that is the number of unique ways FJ can spend his money.

Sample Input

5 3

Sample Output

5
题意:就是给出二个数N,和k,有1~k种钱币,每种都 是无限个,用这些种类的钱币可以组合成总钱N有多少种方式。
解题:这就是一个完全背包,把N看成容量,钱币的类型值为 花费和价值。与记录有多少种路径的走法一样,但要注意的是 这里输出的数据会很大,会超出long long型,所以用两个 long long 型来表示一个大数。分别是高位和低位,低位不 超过10^18,也就是有17位数。

数据较弱可不对低位为零数位补充分析

#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
const long long M=100000000000000000;
int m,n;
long long dp[10010],u[10010];/*用dp数组记录19位以上的数,u数组记录19位以下的数*/
int main()
{while(cin>>m>>n){memset(dp,0,sizeof(dp));u[0]=1;for(int i=1; i<=n; i++)for(int j=i; j<=m; j++){dp[j]+=dp[j-i];u[j]+=u[j-i];if(u[j]>=M){dp[j]+=u[j]/M;u[j]%=M;}}if(dp[m])cout<<dp[m];cout<<u[m]<<endl;}return 0;
}

较精准代码

#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
const long long M=100000000000000000;
int m,n;
long long dp[10010],u[10010];/*用dp数组记录19位以上的数,u数组记录19位以下的数*/
int main()
{while(cin>>m>>n){memset(dp,0,sizeof(dp));u[0]=1;for(int i=1; i<=n; i++)for(int j=i; j<=m; j++){dp[j]+=dp[j-i];u[j]+=u[j-i];if(u[j]>=M){dp[j]+=u[j]/M;u[j]%=M;}}long long ans=u[m];int sum=0;while(ans)/*可能出现低位位数不够的问题,故加零*/{sum++;ans/=10;}if(dp[m]){cout<<dp[m];while(sum<17){sum++;cout<<"0";}}cout<<u[m]<<endl;}return 0;
}
/*题目意思:就是给出二个数N,和k,有1~k种钱币,每种都
是无限个,用这些种类的钱币可以组合成总钱N有多少种方式。*/
/*解题:这就是一个完全背包,把N看成容量,钱币的类型值为
花费和价值。与记录有多少种路径的走法一样,但要注意的是
这里输出的数据会很大,会超出long long型,所以用两个
long long 型来表示一个大数。分别是高位和低位,低位不
超过10^18,也就是有17位数。
*/

Dollar Dayz POJ - 3181(动态规划+大数高低位分离输出)相关推荐

  1. Dollar Dayz POJ - 3181

    解法 完全背包+大数...不想写大数了放个python得了 代码 dp=[0 for i in range(2000)] n,k=map(int,input().split()) num=[i for ...

  2. H - Dollar Dayz

    Dollar Dayz Farmer John 想知道,在一家商品价格为1至K (1 <= K <= 100)的店有多少方法能正好花完他的N(1 <= N <= 1000)元钱 ...

  3. Dollar Dayz(完全背包 + 高精度)

    完全背包 完全背包问题和基本的 0-1 背包问题非常类似,区别就是在完全背包问题中,每种物品有无限件. 从每种物品的角度考虑,求解完全背包问题的策略由对某种物品取或者不取变成了取0件.取1件.取2件- ...

  4. 十进制转化为十六进制分割高低位

    2019独角兽企业重金招聘Python工程师标准>>> 将十进制1000,转化为十六进制,则为0x03E8,如果得到高低位,high=0x03,low=0xE8 BYTE high; ...

  5. ConcurrentHashMap的源码分析-为什么要做高低位的划分

    要想了解这么设计的目的,我们需要从ConcurrentHashMap的根据下标获取对象的算法来看,在putVal方法中1018行 (f = tabAt(tab, i = (n - 1) & h ...

  6. ConcurrentHashMap的源码分析-高低位原理分析

    ConcurrentHashMap在做链表迁移时,会用高低位来实现,这里有两个问题要分析一下 1. 如何实现高低位链表的区分 假如我们有这样一个队列 第14个槽位插入新节点之后,链表元素个数已经达到了 ...

  7. c语言高低位拷贝_C语言中的大小端转换与高低位颠倒

    总结一下最近工作学到的东西,主要是关于大小端与高低位. 在说大小端高低位之前,肯定要说明数据在计算机内是如何存储的.在计算机中,我们将数据分割成了一个一个的字节(byte),而每个字节又有8位(bit ...

  8. 洛谷——P1100 高低位交换

    P1100 高低位交换 题目描述 给出一个小于2^32的正整数.这个数可以用一个32位的二进制数表示(不足32位用0补足).我们称这个二进制数的前16位为"高位",后16位为&qu ...

  9. bzoj 1655: [Usaco2006 Jan] Dollar Dayz 奶牛商店(高精度完全背包)

    1655: [Usaco2006 Jan] Dollar Dayz 奶牛商店 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 599  Solved: 3 ...

最新文章

  1. HDU - 6305 RMQ Similar Sequence(笛卡尔树)
  2. python基础知识-11-函数装饰器
  3. CF1131E String Multiplication(???)
  4. PAT甲级1145 Hashing - Average Search Time:[C++题解]哈希表、哈希表开放寻址法、二次探测法、求平均查找次数
  5. MyBatis-学习笔记10【10.JNDI扩展知识】
  6. ORACLE数据迁移参考
  7. ABAP R3 时代著名的 SFLIGHT 航班模型测试数据,到了S/4HANA时代的进化版
  8. UDID获取的方法(Iphone,Ipad,Mac,Window都可以)
  9. MySQL倒计时查询剩余时间xx年xx月xx天
  10. SNF快速开发平台--规则引擎介绍和使用文档
  11. 上百套房子装修样板!
  12. 计算机页面错误代码,电脑Windows常见错误代码解析
  13. 小程序webview嵌入h5兼容iphone安全区域
  14. Linux下的聊天软件
  15. 【张亚飞】 准确、完整地把握Flash动画设计的知识体系——Flash用户入门必读...
  16. MYSQL----数据库
  17. ArcGIS水文分析实战教程(15)库容和淹没区计算
  18. GitHub标星8k,安卓最牛教材
  19. [转帖]谨以此文献给才毕业一两年的朋友 (选自同事信件)
  20. 转 Sap客户端中英文切换

热门文章

  1. 用递归实现字符数组的反转
  2. Andriod之import android.support.v4或者import android.support.v7提示导入错误解决办法
  3. java解析xml生成表格_JAVA读取XML文件并解析 以及 JAVA生成文本文件输出
  4. 基于小波变换的信号降噪处理及仿真研究_信号处理方法推荐--1(转载自用,侵删)...
  5. 豆瓣9.6分!这部BBC的纪录片太让人震撼!
  6. 假如你学过高数,那你这一辈子都不会忘记这个人
  7. 致家长:疫情期间教育好自己的孩子,就是你最重要的事业!
  8. 数据挖掘的十种分析方法
  9. php 获取浏览器时区,获取用户时区
  10. pixelbook安装linux系统,谷歌Pixelbook可以运行Fuchsia操作系统 正测试