题意:给出两个数,n,m,问1~m中的数组成n,有多少种方法?

  这题其实就相当于 UVA 674 Coin Change,求解一样
  只不过数据很大,需要用到高精度运算。。。

后来还看了网上别人的解法,是将大数转化成高位和低位两部分处理

代码一:用数组存储数据的每个位

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring> using namespace std;
const int maxn=;
long long dp[maxn][]; //增加一维存储每一位的数
int n,k;
int main() { while(scanf("%d%d",&n,&k)!=EOF) {
memset(dp,,sizeof(dp));
dp[][]=;
for(int i=; i<=k; i++) {
for(int j=i; j<maxn; j++) {
//原本就直接写了dp[j]+=dp[j-i],不WA才怪了。。。
for(int z=;z<;z++){
dp[j][z]=dp[j][z]+dp[j-i][z];
if(dp[j][z]>){
dp[j][z]-=;
dp[j][z+]++;
}
}
}
}
int idx=;
while(dp[n][idx]==)
idx--;
for(int i=idx;i>=;i--)
printf("%d",dp[n][i]);
printf("\n");
}
return ;
}

代码二:将大数分成两部分,高位部分和低位部分

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring> using namespace std;
const long long mod=;
const int maxn=;
long long dphigh[maxn]; //一个数的高位部分
long long dplow[maxn]; //一个数的低位部分
int n,k;
int main() { while(scanf("%d%d",&n,&k)!=EOF) {
memset(dphigh,,sizeof(dphigh));
memset(dplow,,sizeof(dplow));
dplow[]=;
for(int i=; i<=k; i++) {
for(int j=i; j<maxn; j++) {
dphigh[j]+=dphigh[j-i];
dplow[j]+=dplow[j-i];
dphigh[j]+=(dplow[j])/mod;
dplow[j]=dplow[j]%mod;
}
}
if(dphigh[n])
printf("%I64d",dphigh[n]);
printf("%I64d\n",dplow[n]);
}
return ;
}

最新文章

  1. Entity Framework Code First添加修改及删除单独实体
  2. Atiti.ui原理与gui理论
  3. GO語言基礎教程:數組,切片,map
  4. ADO.NET- 基础总结及实例介绍
  5. arch Linux not found device 错误解决
  6. 一段SQL代码的压缩:从974行到96行,十倍压缩
  7. 探索C/C++大数快(自然数)模板
  8. 讨论IT选定的技术招聘企业几点
  9. 定制jackson的自定义序列化(null值的处理)
  10. PHP+Apache怎样监控多个port和配置多网站
  11. JS 小技巧整理
  12. E:could not get lock /var/lib/dpkg/lock -ope
  13. KVM安装启动虚拟机
  14. nginx相关知识
  15. CoAP、MQTT、RESTful协议区别
  16. 中文全文检索讯搜xunsearch安装
  17. Spark Sql数仓报-Metastore contains multiple versions
  18. [HNOI2011]括号修复
  19. 浅入浅出Lambda表达式
  20. jQuery的prop和attr的区别,及判断复选框是否选中

热门文章

  1. iframe 父子窗口相互之间调用语法
  2. Percona-Xtrabackup 2.3.3 慢查询依旧堵塞MariaDB备份(三)
  3. 苹果HomeKit如何牵动全国智能硬件格局
  4. android EditText获取光标位置并安插字符删除字符
  5. Java使用FileLock实现Java进程互斥锁
  6. Qt中的事件
  7. matlab 画不同图案的柱状图
  8. 软件工程实践小队Scrum Meeting
  9. 使用高德地图SDK获取定位信息
  10. JavaScript DOM动态创建(声明)Object元素