C++系列-数学专题系列

一、数学专题常见题型

考察类型考察范围
公式类数列规律:等差数列,等比数列
组合数学类排列组合:容斥原理,加法原理
约数问题约数的统计、最大公约数的查找
质数问题质数筛选 :埃式筛法、质数的应用

二、数学专题–数列规律

  1. 通项公式、前n项求和公式
    1)等差数列、等比数列
数列类型通项公式求和公式
等差数列an=a1+(n-1)*dSn=1/2n*(an+a1)
等比数列an=a1*qn-1Sn=a1(1-qn)/(1-q)

a1:数列首项
n:数列的项数
d:数列的公差
q:数列的公比
an:数列的前n项

2)其他类型数列

数据类型通项公式求和公式
12+22+32+…an=n2Sn=1/6n(n+1)(2n+1)
13+23+33+…an=n3Sn=[1/2n(n+1)]2
12+32+52+…an=(2n-1)2Sn=1/3n(4n2-1)
斐波那契数列an=an-1+an-2-
  1. 数列规律问题的解题思路:使用递推算法,通过计算前面的一些项来得出序列中的 指定项的值。

三、数学专题–组合数学

考察类型定义数学表达式
加法原理完成一件事的方法分为几类,每一类的任何一种方法都能完成任务。方法数=方法1+方法2+方法3+…
乘法原理完成一件事的方法分为几步,每一步有多种方法,这几步缺一不可。方法数=方法1方法2方法3*…
容斥原理统计对象数目时,先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,最后最后再把计算出来,最后再把计数时重复计算的数目排斥出去。A∪B=A+B-A∩B

三、数学专题–数列规律

已知数列的规律,如何编程完成指定项目的求解呢?
递推算法---->通常是通过计算前面的一些项来得出序列中的指定项的值。
递推算法是序列计算中的一种常用算法。

数列求解

【问题描述】
信息社团杨老师为了选拔一名小助手,出了一道题目,题中给出一个数列:f[1]=1,f[2]=1,f[i]=3f[i-1]+2f[i-2],要求计算出f[n]。n值由杨老师任意给出(1=<n<=15),请开动脑筋,快来挑战吧!
【样例输入】
4
【样例输出】
17

分析:
第一步:总结出数列的规律,得到数列中前两项是特殊项,均为1,从第三项开始,满足以下规律:f[i]=3f[i-1]+2f[i-2]。
第二步:确定方法,使用递推算法完成数列第n项的求解。

#include<iostream>
using namespace std;
int main(){
    int f[501],n; 
    f[1]=1,f[2]=1;
    cin>>n;
    if(n<3) cout << 1;	
    else{
        for(int i=3;i<=n;i++)
        	f[i]=3*f[i-1]+2*f[i-2];
        cout << f[n];
    }
    return 0;	
}

容斥原理的应用

【问题描述】
一个班级中有20人学习英语,有10人学习德语,有三人同时学习英语和德语,问班级中共有几人学习外语?

分析:用集合A、B分别表示学习英语和德语的学生,那么学习外语的学生就可以用集合A∪B = A + B - A∩B = 20+10 - 3 =
27人。 答案:27

扑克牌问题

【问题描述】
两个小伙伴要玩扑克牌比大小的游戏:每人分到一种花色的扑克牌,然后每人随机出一张牌,大者胜,最后获胜次数多的人,赢一轮。意外的事情发生了,玩了一轮后,发现扑克牌竟然少了一张。到底少了几张呢?你能写个程序快速找到扑克x吗?
输入:输入一行,包括25个空格分隔的数字(A表示为1,J、Q、K表示为11、12、13).。
输出:输出数字x,表示缺少的扑克牌数字。
【样例输入】
9 1 13 2 6 10 7 8 3 11 4 1 5 9 10 2 4 3 12 13 11 5 8 6 7
【样例输出】
12

分析:
第一步:根据题目情境–>归纳问题类型
第二步:容斥原理问题:总体=部分1+部分2–>部分1=总体-部分2.
第三步:先统计现有扑克牌的数字总和S1–>用完整扑克牌的数字总和-S1–>得到缺失那张牌的数字S2.

#include<iostream>
using namespace std;
int main(){
    int num,i,s=0;
    for( i=0;i<25;i++){
        cin>>num;
		s+=num; 
    }
	s=182-s;
    cout<<s;
    return 0;
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KK的号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值