Acdream1084 寒假安排 求n!中v因子个数
题目链接: pid=1084">点击打开链接
寒假安排
Problem Description
寒假又快要到了,只是对于lzx来说,头疼的事又来了,由于众多的后宫都指望着能和lzx约会呢,lzx得安排好计划才行。
如果lzx的后宫团有n个人。寒假共同拥有m天,而每天仅仅能跟一位后宫MM约会。而且因为后宫数量太过庞大了。而寒假的天数太少,所以lzx在寒假里不会与一个MM约会一次以上。如今lzx想要知道:寒假安排的方案数如果写成k进制,末位会有多少个0。
Input
输入的第一行是一个整数。为数据的组数t(t<=1000)。
每组数据占一行,为3个正整数n、m和k(1<=m<=n<2^31,2<=k<2^31),意思如上文所述。
Output
Sample Input
3
10 5 10
10 1 2
10 2 8
Sample Output
1
1
0
Source
Manager
求n!中v因子个数的做法:
代码:
ll go(ll x, ll v){
ll ans = 0;
ll tmp = v;
while(x>=tmp){
ans += x/tmp;
tmp*=v;
}
return ans;
}
然后把k分解质因素。取因子中最小的数量既是0的个数。
#include<stdio.h>
#include<iostream>
#include<cstdio>
#include<queue>
#include<ctype.h>
#include<cstring>
#include<math.h>
#include<set>
#include<queue>
using namespace std;
#define ll long long
ll n, m, k;
ll Stack[1000], top, Cnt[1000];
void fenjie(){
top = 0;
memset(Cnt, 0, sizeof Cnt);
for(ll i = 2; i*i<=k; i++)if(k%i==0){
while(k%i==0)Cnt[top]++, k/=i;
Stack[top++] = i;
}
if(k>1){
Cnt[top]++;
Stack[top++] = k;
}
}
ll go(ll x, ll v){
ll ans = 0;
ll tmp = v;
while(x>=tmp){
ans += x/tmp;
tmp*=v;
}
return ans;
}
ll tmp[1000];
int main(){
int T;scanf("%d",&T);
while(T--){
cin>>n>>m>>k;
fenjie();
memset(tmp, 0, sizeof tmp);
for(ll i = 0; i < top; i++){
tmp[i] += go(n, Stack[i]);
}
for(ll i = 0; i < top; i++){
tmp[i] -= go(n-m, Stack[i]);
}
ll ans = tmp[0]/Cnt[0];
for(ll i = 1; i < top; i++)
ans = min(ans, tmp[i]/Cnt[i]);
cout<<ans<<endl;
}
return 0;
}
Acdream1084 寒假安排 求n!中v因子个数的更多相关文章
- JDOJ 1775: 求N!中0的个数
JDOJ 1775: 求N!中0的个数 JDOJ传送门 Description 求N!结果中末尾0的个数 N! = 1 * 2 * 3 ....... N Input 输入一行,N(0 < N ...
- 求bit中1的个数有几种做法
原文 求bit中1的个数有几种做法: - x & (x - 1) - Hamming weight的经典求法,基于树状累加:http://en.wikipedia.org/wiki/Hammi ...
- 51nod_1003 阶乘后面0的数量(求N!中5的个数,数论)
题意: n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0. Input 一个数N(1 <= N <= 10^9) OutPut 输出0的数 ...
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛-等式(求$N^2$的因子个数)
一.题目链接 https://www.nowcoder.com/acm/contest/90/F 二.题面 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言655 ...
- SPOJ - DISUBSTR 求串中子串的个数
\(height\)简单应用 #include<iostream> #include<cstdio> #include<cstring> #include<c ...
- POJ 2992 求组合数的因子个数
求C(n,k)的因子个数 C(n,k) = (n*(n-1)*...*(n-k+1))/(1*2*...*k) = p1^k1 * p2^k2 * ... * pt^kt 这里只要计算出分子中素数因子 ...
- 二进制中 1 的个数(C++ 和 Python 实现)
(说明:本博客中的题目.题目详细说明及参考代码均摘自 “何海涛<剑指Offer:名企面试官精讲典型编程题>2012年”) 题目 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个 ...
- 求n!中因子k的个数
思路: 求n的阶乘某个因子k的个数,如果n比较小,可以直接算出来,但是如果n很大,此时n!超出了数据的表示范围,这种直接求的方法肯定行不通.其实n!可以表示成统一的方式. n!=(km)*(m!)*a ...
- 快速求n的质因子(数论)
快速求n的质因子 如何尽快地求出n的质因子呢?我们这里又涉及两个好的算法了! 第一个:用于每次只能求出一个数的质因子,适用于题目中给的n的个数不是很多,但是n又特别大的 #include<std ...
随机推荐
- ARM上的linux如何实现无线网卡的冷插拔和热插拔
ARM上的linux如何实现无线网卡的冷插拔和热插拔 fulinux 凌云实验室 1. 冷插拔 如果在系统上电之前就将RT2070/RT3070芯片的无线网卡(以下简称wlan)插上,即冷插拔.我们通 ...
- Hadoop 安装大纲
安装centos,配置stable ip address,文件系统,根目录用户密码,hostname,安装相关工具 打开centos,创建hadoop用户,密码.配置eth0,onboot=YES, ...
- 等待事件:enq: HW - contention和enq: TM - contention
今天生成了生产库前几日的AWR报告,发现等待事件中出现了一个陌生的event--enq: HW - contention,google一下是ASSM(Auto Segment Space Manage ...
- 5.7 cm server-agent 会出现无法启动
异常信息如下: 离线安装cloudera-scm-agent5.7的Unable to create the pidfile问题 在离线安装Cloudera Manager启动agent出现了如下异常 ...
- 端口扫描器之java实现
端口扫描器之java实现 import java.net.*;import java.io.*;import java.awt.*;import java.awt.event.*;import j ...
- [Linked List]Reverse Nodes in k-Group
Total Accepted: 48614 Total Submissions: 185356 Difficulty: Hard Given a linked list, reverse the no ...
- [Linked List]Swap Nodes in Pairs
Total Accepted: 73777 Total Submissions: 219963 Difficulty: Medium Given a linked list, swap every t ...
- 运用Hibernate-Tools自动生成Java类和schema时,出现not found while looking for property...异常
问题描述: 在使用Hibernate-tools时出现not found while looking for property...(具体信息省略). 问题分析: 我找到出错对应的hbm.xml文件, ...
- baidu-fex 精彩文章
7 天打造前端性能监控系统 http://fex.baidu.com/blog/2014/05/build-performance-monitor-in-7-days/ 前端自动化测试探索 http: ...
- 原生JS研究:学习jquery源码,收集整理常用JS函数
原生JS研究:学习jquery源码,收集整理常用JS函数: 1. JS获取原生class(getElementsByClass) 转自:http://blog.csdn.net/kongjiea/ar ...