NYOJ 70 阶乘因式分解(二)

时间限制:3000 ms
 |  内存限制:65535 KB

难度:3

描述

给定两个数n,m,其中m是一个素数。

将n(0<=n<=2^31)的阶乘分解质因数,求其中有多少个m。

注:^为求幂符号。

 

输入
第一行是一个整数s(0<s<=100),表示测试数据的组数

随后的s行, 每行有两个整数n,m。 

输出
输出m的个数
样例输入
3
100 5
16 2
1000000000  13
样例输出
24
15
83333329

分析:

这道题的关键是效率,找出最有效的算法。(和《编程之美》上的某道题类似)

#include <iostream>
#include <cstring>
#include <string>

using namespace std;

int main()
{
	int s,n,m,ans;
	cin>>s;
	while(s--)
	{
		cin>>n>>m;

		ans=0;

		if(n<2)
			cout<<ans<<endl;
		else
		{
			while(n/m)
			{
				ans+=(n/m);
				n/=m;
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}
时间: 2024-11-05 15:53:12

NYOJ 70 阶乘因式分解(二)的相关文章

NYOJ 70 阶乘因式分解(二)【数学题】

思路: n=100   m=5 100是由20个5组成的,1~100中是5的倍数的数有 5.10.15.20....100 每十个数有两个 数是5的倍数,所以1~100中5的倍数有20个 , 从这二十个数中各分解出一个5,则有20个5,然后这二十个数变成20.19.18...1 即20的阶乘了相当于变成求20的阶乘能分解多少个m 在1~20中又能分解4个 在往下就不够 5个数了,就结束循环 所以总共能分解24个 难点详解: 为什么舍弃100中其他不是5的倍数的数呢? 题目让我们求5的倍数,那些数

nyist 70 阶乘因式分解(二)

阶乘因式分解(二) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 给定两个数n,m,其中m是一个素数. 将n(0<=n<=2^31)的阶乘分解质因数,求其中有多少个m. 注:^为求幂符号.   输入 第一行是一个整数s(0<s<=100),表示测试数据的组数随后的s行, 每行有两个整数n,m.  输出 输出m的个数 样例输入 3 100 5 16 2 1000000000 13 样例输出 24 15 83333329 #include <std

NYOJ 56 阶乘因式分解

阶乘因式分解(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 给定两个数m,n,其中m是一个素数. 将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m. 输入 第一行是一个整数s(0<s<=100),表示测试数据的组数 随后的s行, 每行有两个整数n,m. 输出 输出m的个数. 样例输入 2 100 5 16 2 样例输出 24 15 代码如下: #include<iostream> using namespace st

NYOJ 56 阶乘因式分解(一)【数学题】

解释见阶乘因式分解(二) 阶乘因式分解(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 给定两个数m,n,其中m是一个素数. 将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m. 输入 第一行是一个整数s(0<s<=100),表示测试数据的组数 随后的s行, 每行有两个整数n,m. 输出 输出m的个数. 样例输入 2 100 5 16 2 样例输出 24 15 来源 网络 上传者 苗栋栋 #include<stdio.h>

NYOJ 56 阶乘因式分解(一)

时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 给定两个数m,n,其中m是一个素数. 将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m. 输入 第一行是一个整数s(0<s<=100),表示测试数据的组数 随后的s行, 每行有两个整数n,m. 输出 输出m的个数. 样例输入 2 100 5 16 2 样例输出 24 15 #include <iostream> #include <cstring> #include

【ACM】阶乘因式分解(二)

阶乘因式分解(二) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 给定两个数n,m,其中m是一个素数. 将n(0<=n<=2^31)的阶乘分解质因数,求其中有多少个m. 注:^为求幂符号.   输入 第一行是一个整数s(0<s<=100),表示测试数据的组数随后的s行, 每行有两个整数n,m.  输出 输出m的个数 样例输入 3 100 5 16 2 1000000000 13 样例输出 24 15 83333329 #include <ios

阶乘因式分解(一)(南阳oj56)

阶乘因式分解(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 给定两个数m,n,其中m是一个素数. 将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m. 输入 第一行是一个整数s(0<s<=100),表示测试数据的组数 随后的s行, 每行有两个整数n,m. 输出 输出m的个数. 样例输入 2 100 5 16 2 样例输出 24 15 来源 网络 上传者 苗栋栋 #include<stdio.h> int main()

nyoj 12 喷水装置(二)【贪心】+【区间完全覆盖覆盖】

题意:... 这道题就是区间问题三种中的区间完全覆盖问题,不懂的可以看我上一篇也是区间完全覆盖. 直接上代码: #include <stdio.h> #include <math.h> #include <algorithm> using std::sort; struct node{ double le, ri; }s[1005]; int cmp(node a, node b) { return a.le < b.le; } int main() { int

阶乘因式分解(一)

阶乘因式分解(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 给定两个数m,n,其中m是一个素数. 将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m. 输入 第一行是一个整数s(0<s<=100),表示测试数据的组数 随后的s行, 每行有两个整数n,m. 输出 输出m的个数. 样例输入 2 100 5 16 2 样例输出 24 15 my answer:#include<iostream> using namespace