蓝桥杯每日一题2023.11.9

包子凑数 - 蓝桥云课 (lanqiao.cn)

题目描述

题目分析

对于此题是一个简单DP的翻版问题,若能凑出当前的包子数,则凑出之前一定为dp[i - a[j]],若表示出的dp[i]不是0则说明是一定存在数可以被凑出的,由题意:若凑不出的数字超过10000这个上界,我们就可以判断出有无穷个

最大不能表示出来的数必定有个上界,因为两个数a,b(当gcd=1时),最大不能表示出来的数是(a - 1)(b - 1) - 1,题目中的N为100,99和98是100内最大的互质的数,故这个上界选择10000

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e7;
int a[N], dp[N];
int main()
{
	int n, ans = 0;
	cin >> n;
	for(int i = 1; i <= n; i ++)
	{
		cin >> a[i];
		dp[a[i]] ++;
	}
	for(int i = 1; i <= N; i ++)
	{
		for(int j = 1; j <= n; j ++)
		{
			if(i - a[j] < 0)continue;
			dp[i] = dp[i - a[j]] + dp[i];
			if(dp[i] != 0)break;//这个数可以被凑出 
		}
		if(dp[i] == 0)ans ++;
	}
	if(ans  > 10000)cout << "INF";
	else cout << ans;
	return 0;
}
相关推荐
007php0075 小时前
Redis高级面试题解析:深入理解Redis的工作原理与优化策略
java·开发语言·redis·nginx·缓存·面试·职场和发展
程序员杰哥7 小时前
什么是Jmeter? Jmeter工作原理是什么?
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·测试用例
·云扬·12 小时前
【Leetcode hot 100】101.对称二叉树
算法·leetcode·职场和发展
睡不醒的kun17 小时前
leetcode算法刷题的第三十二天
数据结构·c++·算法·leetcode·职场和发展·贪心算法·动态规划
汉克老师1 天前
第十四届蓝桥杯青少组C++选拔赛[2023.1.15]第二部分编程题(4 、移动石子)
c++·算法·蓝桥杯·蓝桥杯c++·c++蓝桥杯
boonya1 天前
Redisson原理与面试问题解析
面试·职场和发展·redission·分布式中间件框架
旭意1 天前
C++微基础蓝桥杯之旅9.9-9.12
c++·算法·蓝桥杯
东方芷兰2 天前
Leetcode 刷题记录 21 —— 技巧
java·算法·leetcode·职场和发展·github·idea
青鱼入云2 天前
【面试场景题】电商订单系统分库分表方案设计
大数据·面试·职场和发展
程序员三藏2 天前
2025最新的软件测试面试八股文(800+道题)
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展