1. 数学作业

【问题描述】

路人丙的数学老师非常乏力,他喜欢出一些非常乏力的数学题来为难乏力的学生们。这次数学老师布置了一堆的数学题作为作业,而且这些数学题有个共同的特点是都求C(N,M)中不同质因子的个数,所以路人丙需要你帮他写一个程序来帮助他快速地完成这些作业。C(N,M)即求在N中选M个的组合数。

【输入文件】

输入N,M(1<=N,M<=50000)

【输出文件】

输出一个整数

【样例输入】

7 3

【样例输出】

2

解:数论题;不用求组合数和杨辉三角;
    否则会爆内存;正确做法:先做一个质数表;
    然后先分母,后分子,每一个分解质因数,分母每有一个质数,利用【数组】++,
    分子分解【质数】--;
    最后遍历,有则代表组合数的质因数分解;
    则ans++;
    最后输出即可;

 #include<iostream>
#include<cstdlib>
#define sc(x) scanf("%d",&x)
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#define man 50000+10
using namespace std;
int n,m;
int tot=;
int prime[man];
bool a[man];
int ans=;
int c[man];
void mktb(int n)
{
for(int i=;i<=n;i++)
{
if(!a[i])
prime[++tot]=i;
for(int j=;j*prime[i]<=n;j++)
{
a[prime[i]*j]=;
if(i%prime[j]==)
break;
}
}
}
void calc1(int n)
{ for(int i=;i<=tot&&prime[i]<=n;i++)
{
while(n%prime[i]==)
{
c[i]++;
n=n/prime[i];
}
}
}
void calc2(int n)
{ for(int i=;i<=tot&&prime[i]<=n;i++)
{
while(n%prime[i]==)
{
c[i]--;
n=n/prime[i];
}
}
}
int main()
{ freopen("math.in","r",stdin);
freopen("math.out","w",stdout);
memset(c,,sizeof(c));
memset(a,,sizeof(a));
sc(n);sc(m);
mktb(n);
for(int i=n;i>n-m;i--)
calc1(i);
for(int i=;i<=m;i++)
calc2(i);
for(int i=;i<=n;i++)
if(c[i])
ans++;
printf("%d\n",ans);
return ;
}

冲刺NOIP2015提高组复赛模拟试题(五)1.数学作业的更多相关文章

  1. 冲刺NOIP2015提高组复赛模拟试题(五)2.道路修建

    2.道路修建 描述 Description liouzhou_101最悲痛的回忆就是NOI2011的道路修建,当时开了系统堆栈,结果无限RE… 出于某种报复心理,就把那题神奇了一下: 在 Z星球上有N ...

  2. 冲刺NOIP2015提高组复赛模拟试题(五) 3.破坏基地

    3.破坏基地 描述 Description 在Z国和W国之间一直战火不断. 好不容易,W国的间谍把完整的Z国的军事基地的地图到手了. 于是W国决定再次出击,一举击破Z国的防线. W国认真研究了Z国的地 ...

  3. CCF-NOIP-2018 提高组(复赛) 模拟试题(五)

    T1 相遇 [问题描述] 在一场奇怪的梦里,小 Y 来到了一个神奇的国度.这个国度可以用一根数轴表示,小 Y 在 N 处,而小 Y 想吃的美食在 K 处.小 Y 有两种方式移动, 一种叫做步行, 一种 ...

  4. CCF-NOIP-2018 提高组(复赛) 模拟试题(七)

    T1 Adjoin [问题描述] 定义一种合法的\(0-1\)串:串中任何一个数字都与\(1\)相邻.例如长度为$ 3 的 0-1 $串中,\(101\)是非法的,因为两边的\(1\)没有相邻的\(1 ...

  5. CCF-NOIP-2018 提高组(复赛) 模拟试题(四)

    T1 贪吃蛇 [问题描述] 贪吃蛇是一个好玩的游戏.在本题中,你需要对这个游戏进行模拟. 这个游戏在一个 \(n\) 行 \(m\) 列的二维棋盘上进行. 我们用 \((x, y)\) 来表示第 \( ...

  6. CCF-NOIP-2018 提高组(复赛) 模拟试题(九)(2018 CSYZ长沙一中)

    T1 Circle [问题描述] 小 w 的男朋友送给小 w 一个 n 个点 m 条边的图,并且刁难小 w 要她找出点数最少的正环. 小 w 不会做,于是向你求助. [输入格式] 第一行两个整数\(n ...

  7. CCF-NOIP-2018 提高组(复赛) 模拟试题(一)

    T1 帽子戏法 问题描述 小 Y 有一个\(n*n*n\)的"帽子立方体" ,即一个\(n\)层的立方体,每层的帽子都 可以排成\(n*n\)的矩阵. "帽子立方体&qu ...

  8. 破译情报-NOIP2016提高组复赛模拟试题

    [题目描述] 最近国安人员截获了一份 RB 国的秘密情报, 全文都是经过加密的,每个单 词都很长.破译人员想到先把单词化简一下,方法是把每个单词尽量取短些的前 缀,但所取的前缀不能是其他单词的前缀. ...

  9. CCF-NOIP-2018 提高组(复赛) 模拟试题(三)

    T1 取球游戏 问题描述 现有\(N\)个小球,依次编号为\(1\)到\(N\),这些小球除了编号以外没有任何区别.从这\(N\)个小球中取出\(M\)个,请问有多少种取球方案使得在取出的\(M\)个 ...

随机推荐

  1. linux(7)

    第十七单元 Samba服务 [本节内容]1. 掌握samba的功能: samba是一个网络服务器,用于Linux和Windows之间共享文件.2. 掌握samba服务的启动.停止.重启service ...

  2. Java基础--NIO

    NIO库在JDK1.4中引入,它以标准Java代码提供了高速的,面向块的IO,弥补了之前同步IO的不足. 缓冲区Buffer Buffers是一个对象,包含了一些要写入或读出的数据.在面向流的IO模型 ...

  3. H5测试 有空了解下里面没有用过的东西

  4. python--logging库学习_自我总结---有空完善

    思路: 1.把前面的都封装,然后在测试用例里面调用,每一步测试步骤下面都加一个  logging.info('这个是测试步骤')(可以 亲测) 2.尝试添加到unittest框架里面,看能不能一起使用 ...

  5. Linut ssh sftp服务重启

    在网上,收了半天,终于找到这个,记录一下~哈~ RedHat Linux 重启SSH /etc/init.d/sshd restart 重启SFTP /etc/init.d/vsftpd restar ...

  6. Vim编辑器基本操作学习(二)

    操作符+位移 x命令可以删除一个字符,4x可以删除4个字符. dw可以删除一个word,w事实上是向后移动一个word的命令:dw可以接上一个任意一个位移命令,它将删除从当前光标开始到位移终点处的文本 ...

  7. OSGi学习-总结

    本文是osgi实战一书的前几章读书总结 1.  OSGi简介 Java缺少对高级模块化的支持,为了弥补Java在模块化方面的不足,大多数管理得当的项目都会要求建立一整套技术,包括: 适应逻辑结构的编程 ...

  8. node.js 获取客户端信息

    结果:

  9. Mybatis动态构建Sql(无实体类)

    MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑. 例如,sql语句where条件中,需要一些安全判断,例如按某一条件查询时如果传入的参数是空,此时查询 ...

  10. 【洛谷】P1754 球迷购票问题(基础dp)

    题目背景 盛况空前的足球赛即将举行.球赛门票售票处排起了球迷购票长龙. 按售票处规定,每位购票者限购一张门票,且每张票售价为50元.在排成长龙的球迷中有N个人手持面值50元的钱币,另有N个人手持面值1 ...