UVA11375火柴(递推+大数)
题意:
给你n根火柴,问你能组成多少种数字,比如3根可以组成1或者7,组成的数字中不能有前导0,
思路:
我们开一个数组,d[i]记录用i跟火柴可以组成多少种数字,则更新状态是这样的
d[i+c[j]] += d[i], c[j]就是组成数字j要用的火柴数,这样跟新相当于是在模拟写数字,但是有一点就是不能以0开头,左后当火柴数大于等于6的时候就可以在总答案上+1,表示可以构成一个单独的0(因为之前没有0开头的,所以要+1补回来),最后答案就是
Ans[n] = d[1] + d[2] + d[3] + .... + d[n],因为火柴可以不全部用完,还有就是数据比较大,要用大数模拟,这个就不解释了。
#include<stdio.h>
#include<string.h>
#define N 2000 + 5
int d[N][1000];
int Ans[N][1000];
void solve()
{
int i ,j;
int c[] = {6,2,5,5,4,5,6,3,7,6};
memset(d ,0 ,sizeof(d));
d[0][1] = 1;
for(i = 0 ;i <= 2000 ;i ++)
for(j = 0 ;j <= 9 ;j ++)
{
if(!(i==0&&j==0) && i+c[j] <= 2000)
{
//d[i+c[j]] += d[i];
for(int k = 1 ;k <= 888 ;k ++)
d[i+c[j]][k] += d[i][k];
for(int k = 1 ;k <= 888 ;k ++)
{
d[i+c[j]][k+1] += d[i+c[j]][k] / 10;
d[i+c[j]][k] %= 10;
}
}
}
for(i = 1 ;i <= 2000 ;i ++)
{
if(i == 1)
{
for(j = 1 ;j <= 888 ;j ++)
Ans[i][j] = d[i][j];
continue;
}
//Ans[i] = Ans[i-1] + d[i];
for(j = 1 ;j <= 888 ;j ++)
Ans[i][j] = Ans[i-1][j] + d[i][j];
for(j = 1 ;j <= 888 ;j ++)
{
Ans[i][j+1] += Ans[i][j] / 10;
Ans[i][j] %= 10;
}
}
for(i = 6 ;i <= 2000 ;i ++)
{
Ans[i][1] ++;
if(Ans[i][1] >= 10)
for(int k = 1 ;k <= 888 ;k ++)
{
Ans[i][k+1] += Ans[i][k] / 10;
Ans[i][k] %= 10;
}
}
}
int main ()
{
int n ,i ,j;
solve();
while(~scanf("%d" ,&n))
{
for(i = 888 ;i >= 1 ;i --)
if(Ans[n][i]) break;
if(i == 0)
{
printf("0\n");
continue;
}
for(;i >= 1;i --)
printf("%d" ,Ans[n][i]);
printf("\n");
}
return 0;
}
UVA11375火柴(递推+大数)的更多相关文章
- Tiling(递推+大数)
Description In how many ways can you tile a 2xn rectangle by 2x1 or 2x2 tiles? Here is a sample tili ...
- Children’s Queue HDU 1297 递推+大数
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1297 题目大意: 有n个同学, 站成一排, 要求 女生最少是两个站在一起, 问有多少种排列方式. 题 ...
- ACM学习历程—HDU1041 Computer Transformation(递推 && 大数)
Description A sequence consisting of one digit, the number 1 is initially written into a computer. A ...
- 【hdoj_1865】1sting(递推+大数)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1865 本题的关键是找递推关系式,由题目,可知前几个序列的结果,序列长度为n=1,2,3,4,5的结果分别是 ...
- poj 2506 Tiling(递推 大数)
题目:http://poj.org/problem?id=2506 题解:f[n]=f[n-2]*2+f[n-1],主要是大数的相加; 以前做过了的 #include<stdio.h> # ...
- Buy the Ticket HDU 1133 递推+大数
题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=1133 题目大意: 有m+n个人去买电影票,每张电影票50元, m个人是只有50元一张的, n个人 ...
- ACM学习历程—HDU1023 Train Problem II(递推 && 大数)
Description As we all know the Train Problem I, the boss of the Ignatius Train Station want to know ...
- Tiling 简单递推+大数
Tiling c[0]=1,c[1]=1,c[2]=3; c[n]=c[n-1]+c[n-2]*2; 0<=n<=250. 大数加法 java time :313ms 1 ...
- HDU1134/HDU1133 递推 大数 java
Game of Connections Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
随机推荐
- [BJOI2020] 封印
一.题目 点此看题 二.解法 今天不知道为什么手感这么好,写一发完全没调就过掉了. 我感觉这种多组询问的字符串题是很难的,经常没有什么思路.我先考虑了一下能不能像 区间本质不同的子串个数 这样直接离线 ...
- linux下 > /dev/null 2 > &1 的意思和如何在后台启动进程
一.几个基本符号及其含义 之前看到别人写的一个shell脚本,有一个命令是:rm -f ${src_tmp_file} > /dev/null 2>&1 现在大概明白是什么意思了 ...
- gtk---实现一个登录界面
输入框 如果在GTK+中需要输入一个字符串,可以使用输入框,这是一个单行的输入构件,可以用于输入和显示正文内容. 输入框的基本操作函数 1.gtk_entry_new(void); 这是新建一个输入框 ...
- The 2018 ACM-ICPC CCPC NING XIA G-Factories
题意:在一棵数的叶子上建k个工厂保证,求两两距离之和的最小值. 思路:如果一个一个叶子节点去考虑去与否太麻烦了,直接考虑该节点的子树上选取几个作为工厂,利用树形DP,dp[u][i]表示的是u节点为根 ...
- SQL排名问题,100% leetcode答案大公开!
(首先原谅我最近新番看多了,起了一个中二的名字) 最近在找实习,所以打算系统总结(复习)一下sql中经常遇到问题.不管是刷leetcode还是牛客的sql题,有一个问题总是绕不开的,那就是排名问题.其 ...
- 在docker容器中使用cplex-python37
技术背景 线性规划是常见的问题求解形式,可以直接跟实际问题进行对接,包括目标函数的建模和各种约束条件的限制等,最后对参数进行各种变更,以找到满足约束条件情况下可以达到的最优解.Cplex是一个由IBM ...
- Spring框架的介绍
1.Spring框架的结构 由持久层.表现层.中间模块和测试层组成. 持久层:和数据接触.事务管理 表现层:对数据进行处理 中间模块:核心功能 测试层:用来测试完整度 核心功能介绍 1.1 控制反转 ...
- Oracle 19c Data Guard DML Redirection ADG备库上执行DML重定向(未来更好的进行读写分离)
资料来自官方网站: https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/managing-oracle-data-g ...
- [Fundamental of Power Electronics]-PART I-2.稳态变换器原理分析-2.3 Boost 变换器实例
2.3 Boost 变换器实例 图2.13(a)所示的Boost变换器器是另一个众所周知的开关模式变换器,其能够产生幅值大于直流输入电压的直流输出电压.图2.13(b)给出了使用MOSFET和二极管的 ...
- 201871010129-郑文潇 实验二 个人项目—《D{0-1}背包问题 》项目报告
项目 内容 课程班级博客链接 课程链接 这个作业要求链接 [作业要求](https://www.cnblogs.com/nwnu-daizh/p/14552393.html) 我的课程学习目标 1.掌 ...