不同组合数求和

不同组合数求和

【试题描述】

给你 n 个不等的正整数 a1,a2,a3,……,an,从中任取 m 个求和,这些和构成一个新的集合,请你计算新集合的元素个数。

【输入要求】

两行,第一行包含一个正整数 n,第二行包含 n 个不等的正整数(依次为 a1,a2,a3,……,an),两两之间有一个空格分隔。

【输出要求】

一个正整数

【输入实例】

3
1 8 9

【输出实例】

6

【其他说明】

数据范围:0<m<=n<1000,1000>a1>a2>a3>……>an>0。

【试题分析】

是不是很水很水很水?大概一个月前,本弱花了4天才A QAQ

一开始的思路:输进来,存一个数组,然后慢慢加

第二个思路:排列组合,再把重复的减掉

第三个思路:输进来,然后按要求加起来,像桶排序那样记起来,最后再统计

最后才恍然大悟:不就是能组成一个数,那就能组成一个数=那个数+m

【代码】

#include<iostream>
using namespace std;
int a[10010],n,i,j,m,ans,maxn;
int main()
{
	a[0]=1;//0当然是可以组成的,一开始还没想到
	cin>>n;
	for(i=1;i<=n;i++)
	{
	    cin>>m;
		maxn+=m;//组成的sum+m
	    for(j=maxn;j>=0;j--)//把以前的都列举一遍
	    	if(a[j]==1) a[j+m]=1;//如果a[j]==1就是能组成j,那一定能组成j+m
	}
	for(i=1;i<=maxn;i++) ans+=a[i];//直接加
	printf("%d\n",ans);
}
时间: 2024-10-25 15:23:43

不同组合数求和的相关文章

HDU 4704 Sum(隔板原理+组合数求和公式+费马小定理+快速幂)

题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=4704 Problem Description Sample Input 2 Sample Output 2 Hint 1. For N = 2, S(1) = S(2) = 1. 2. The input file consists of multiple test cases. 题意是输入一个N,求N被分成1个数的结果+被分成2个数的结果+...+被分成N个数的结果,N很大 1.隔板原理 1~N有

[hdu5226]组合数求和取模(Lucas定理)

题意:给一个矩阵a,a[i][j] = C[i][j](i>=j) or 0(i < j),求(x1,y1),(x2,y2)这个子矩阵里面的所有数的和. 思路:首先问题可以转化为求(0,0),(n,m)这个子矩阵的所有数之和.画个图容易得到一个做法,对于n<=m,答案就是2^0+2^1+...+2^m=2^(m+1)-1,对于n>m,答案由两部分构成,一部分是2^(m+1)-1,另一部分是sigma i:m+1->n f[i][m],f[i][m]表示第i行前m列的数之和,f

Combination Sum II 组合数求和之2-Leetcode

原题: Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T. Each number in C may only be used once in the combination. Note: All numbers (including target) will be

组合数求和公式以及矩阵快速幂的公式

原文地址:https://www.cnblogs.com/zxz666/p/10548379.html

简单数学(组合数+求数列通项公式)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6467 看到这题,简单数学???对不起我给数学老师丢脸了! 这里解释一下第二步到第三步:假设n=3,第二步{1*C(1,1)+1*C(1,2)+1*C(1,3)+2*C(2,2)+2*C(2,3)+3*C(3,3)},第三步{1*C(1,1)+1*C(1,2)+2*C(2,2)+1*C(1,3)+2*C(2,3)+3*C(3,3)}.可以发现是相等的 之后最后一步就是组合数求和公式2^n. 之后便可以

HDU 4927 Series 1(推理+大数)

HDU 4927 Series 1 题目链接 题意:给定一个序列,要求不断求差值序列,直到剩一个,输出这个数字 思路:由于有高精度一步,所以要推理一下公式,其实纸上模拟一下很容易推出公式就是一个类似杨辉三角的组合数求和,不过奇数位置是加,偶数位置是减,然后高精度过掉 代码: 本人的第一个JAVA程序^ ^ import java.util.Scanner; import java.math.BigInteger; public class Main { public static void ma

The 2017 ACM-ICPC Asia East Continent League Final记录

首先感谢tyz学弟的麻麻-给我们弄到了名额- 然后就开始了ACM ECLFinal的玩耍,A*仙人掌可是立了flag要好好打的- 试机赛好像就全是GCJ kickstart的原题,然后AK了但是由于一上来乱交罚时大爆炸. 面到了qls,tls,llb,wdz,bike,kpm,lzt,qwd,zqc,dicint,yql好多好多好多人- 由于罚时爆炸了,于是晚上和ldz商量大概就是:前期我带节奏,中期大家一起稳住,后期全力肝一个题,不看手速,打正确率. /话说我好像是第一次用ACM格式写游记呢啊

【CodeForces】932 E. Team Work

[题目]E. Team Work [题意]给定n和k,n个人中选择一个大小为x非空子集的代价是x^k,求所有非空子集的代价和%1e9+7.n<=10^9,k<=5000. [算法]斯特林反演 [题解]枚举非空子集大小,则题目要求: $$ans=\sum_{i=1}^{n}\binom{n}{i}i^k$$ 对通常幂进行斯特林反演,得到: $$ans=\sum_{i=1}^{n}\binom{n}{i}\sum_{j=1}^{k}\begin{Bmatrix} k\\ j \end{Bmatri

Codeforces 947E Perpetual Subtraction (线性代数、矩阵对角化、DP)

手动博客搬家: 本文发表于20181212 09:37:21, 原地址https://blog.csdn.net/suncongbo/article/details/84962727 呜啊怎么又是数学了啊...数学比例\(\frac{16}{33}=0.4848\) orz yhx-12243神仙 题目链接: https://codeforces.com/contest/947/problem/E 题意: 有一个\([0,n]\)的随机数\(x\)初始为\(i\)的概率为\(p_i\). \(m