组合数学之加法与乘法原理 例题

文章介绍了四个编程题目,涉及计算尾部零的数量、质素因子个数决定的可整除数、构成优质三角形的数组下标对数量。每个问题都涉及到IT技术中的算法和数据结构应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第1题     尾部0的个数 

计算N!的尾部有多少个零?

输入格式

一行1个正整数N,范围[1,10000]。

输出格式

一个整数。

输入/输出例子1

输入:

10

输出:

2

样例解释

#include<bits/stdc++.h>
using namespace std;
int n,w2,w5,t;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        t=i;
        while(i%2==0)
        {
            i/=2;
            w2++;
        }
        while(i%5==0)
        {
            i/=5;
            w5++;
        }
        i=t;
    }
    cout<<min(w2,w5);
    return 0;
}

第2题     水果篮 

你想送给Mollie大婶一篮水果。在你的冰箱里有A个橘子和M个苹果。唯一的要求是篮子内必须至少有一个水果(即不容许水果篮是空的)。有多少种不同的水果篮?

输入格式

一行2个正整数A和B,范围[1,100]。

输出格式

一个整数。

输入/输出例子1

输入:

6 4

输出:

34

样例解释

#include<bits/stdc++.h>
using namespace std;
int A,M;
int main(){
    cin>>A>>M;
    cout<<(A+1)*(M+1)-1;
    return 0;
}

第3题     因子个数 

N有5个不同的质素因子:2、3、5、7、11,它们的个数分别为:a、b、c、d、e。

即N = 

5.jpg

编程求可以除尽n的正整数个数,(即求有多少个x,是满足n%x等于0)。

 

输入格式

一行5个整数a、b、c、d、e。范围[0,20]。

输出格式

一个整数。

输入/输出例子1

输入:

6 9 1 5 2

输出:

2520

样例解释

#include<bits/stdc++.h>
using namespace std;
int a,b,c,d,e;
int main(){
    cin>>a>>b>>c>>d>>e;
    cout<<(a+1)*(b+1)*(c+1)*(d+1)*(e+1);
    
    return 0;
}

第4题     三角形个数

有一个包含 N 个元素的数组 L[1..N]。 选择数组的 3 个不同下标: i,j,k, 满足 i<j<k, 就构成下标对(i,j,k)。

如果下标对( i,j,k) 满足以下所有条件, 那么该下标对就是“ 优质对” :

1、 令 A = L[i] + L[j]

2、 令 B = L[j] + L[k]

3、 令 C = L[k] + L[i]

4、 如果 A、 B、 C 都是非负数, 而且以 A、 B、 C 作为三条边, 能构成三角形。

你的任务是: 给出 L 数组[1..N], 可以有多少个不同的“ 优质对” ?

输入格式

第一行, 一个整数 N。 1 <= N <= 200000。

接下来有 N 行, 第 i 行是一个整数 L[i]。 -1000000000<=L[i]<=1000000000

输出格式

一个整数。

输入/输出例子1

输入:

-2 -3 -5

输出:

0

输入/输出例子2

输入:

1 4 6 -45

输出:

1

样例解释

#include <bits/stdc++.h>
using namespace std;
int n,x;
long long ans;
int main()
{
	cin>>n;
	for (int i=0;i<n;i++)
	{
		cin>>x;
		if(x>0)ans++;
	}
	cout<<ans*(ans-1)*(ans-2)/6;
    return 0;	
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值