这题主要是质因数分解!!

求出每个因子的幂,如果有负数,则输出-1;

如果2的幂数为0,这输出0;

最后就是开始凑阶乘了……

 #include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<string>
#include<cstdlib>
#include<vector>
using namespace std;
int prime[],cnt,p[],q[],num[],len;
int s[],r[],a[];
bool f[];
int min(int a,int b)
{
return a>b?b:a;
}
int max(int a,int b)
{
return a>b?a:b;
}
void init()
{
int i,j;
cnt=;
for(i=;i<=;i++)
{
if(f[i]==) prime[cnt++]=i;
for(j=;j<cnt&&prime[j]*i<=;j++)
{
f[i*prime[j]]=;
if(i%prime[j]==) break;
}
}
}
int count(int n,int p)//计算n!中p因子的个数
{
int sum=;
while(n>=p)
{
sum+=(n/=p);
}
return sum;
}
int divs(int n,int m)//分解因子
{
int i,j;
len=;
memset(num,,sizeof(num));
for(i=;i<n;i++)
{
for(j=;prime[j]<=p[i];j++)
num[j]+=count(p[i],prime[j]);
len=max(len,j);
}
for(i=;i<m;i++)
{
for(j=;prime[j]<=q[i];j++)
{
if(j>=len) return -;
num[j]-=count(q[i],prime[j]);
if(num[j]<) return -;
}
}
if(num[]==) return ;
return ;
}
int main()
{
init();
int i,j,k,ans,n,m,temp,t,cur,mul;
bool flag;
cin>>t;
while(t--)
{
cin>>n>>m;
for(i=;i<n;i++) cin>>p[i];
for(i=;i<m;i++) cin>>q[i];
ans=divs(n,m);
if(ans<=)
{
cout<<ans<<endl;
continue;
}
for(i=;i<len&&num[i]>;i++) ;
len=min(len,i);
cur=prime[i]-;
cnt=;
while(num[]>&&cur>=)
{
flag=true;
a[]=count(cur,prime[]);
if(a[]>num[]) flag=false;
else mul=num[]/a[];
for(i=;flag&&i<len&&prime[i]<=cur;i++)
{
a[i]=count(cur,prime[i]);
if(a[i]>num[i]) flag=false;
else mul=min(mul,num[i]/a[i]);
}
if(flag && mul>)
{
if(i<len) len=i;
r[cnt]=cur;
s[cnt++]=mul;
for(i=;i<len;i++)
{
num[i]-=(mul*a[i]);
if(num[i]==) break;
}
if(len>i) len=i,cur=prime[len]-;
else cur--;
}
else cur--;
}
cout<<cnt<<endl;
for(i=;i<cnt;i++)
cout<<r[i]<<' '<<s[i]<<endl;
}
return ;
}

hdu 3758 Factorial Simplification的更多相关文章

  1. 题解报告:hdu 1124 Factorial(求N!尾数有多少个0。)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1124 Problem Description The most important part of a ...

  2. HDU 1124 Factorial (数论)

    http://acm.hdu.edu.cn/showproblem.php? pid=1124 題目好長好長,好可怕,看完腎都萎了,以後肯定活不長.我可不能死在這種小事上,小灰灰我勵志死在少女的超短裙 ...

  3. hdu 1124 Factorial(数论)

    题意: 求n!的尾0的个数 分析: 0一定是由因子2和5相乘产生的: 2的个数显然大于5的个数,故只需统计因子5的个数 n/5不能完全表示n!中5的个数(egg: 25),应该n/=5后,累加上n/2 ...

  4. HDU 1124 Factorial (阶乘后缀0)

    题意: 给一个数n,返回其阶乘结果后缀有几个0. 思路: 首先将n个十进制数进行质因数分解,观察的得到只有2*5才会出现10.那么n!应含有min(2个数,5个数)个后缀0,明显5的个数必定比2少,所 ...

  5. [SinGuLaRiTy] 组合数学题目复习

    [SinGuLaRiTy] Copyright (c) SinGuLaRiTy 2017.  All Rights Reserved. [CQBZOJ 2011] 计算系数 题目描述 给定一个多项式( ...

  6. ACM ICPC 2010–2011, Northeastern European Regional Contest St Petersburg – Barnaul – Tashkent – Tbilisi, November 24, 2010

    ACM ICPC 2010–2011, Northeastern European Regional Contest St Petersburg – Barnaul – Tashkent – Tbil ...

  7. Factorial(hdu 1124)

    Description The most important part of a GSM network is so called Base Transceiver Station (BTS). Th ...

  8. HDU——PKU题目分类

    HDU 模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 ...

  9. leetcode N-Queens/N-Queens II, backtracking, hdu 2553 count N-Queens, dfs 分类: leetcode hdoj 2015-07-09 02:07 102人阅读 评论(0) 收藏

    for the backtracking part, thanks to the video of stanford cs106b lecture 10 by Julie Zelenski for t ...

随机推荐

  1. Fedora 20 创建桌面快捷方式

    创建desktop文件 sudo touch /usr/share/applications/sublime.desktop 添加内容 [Desktop Entry] Encoding=UTF-8 N ...

  2. iOS获取汉字的拼音

    在iOS开发中经常涉及到汉字的排序,最常见的就是需要根据首字母的字符顺序排列,比如常见的通讯录等.总结出来,大致可以分为两种方法,其中参考文献[1]中提供的方法十分复杂,利用查表的方法是先,并且代码量 ...

  3. [Apache] 2.2与2.4版本在设置虚拟域名时的小差别

    Apache服务器配置虚拟步骤: 1.在httpd.conf中将附加配置文件httpd-vhosts.conf包含进来,接着在httpd-vhosts.conf中写入如下配置: #LoadModule ...

  4. [转]AIX下调整分区大小

    AIX下调整文件系统大小 - [work] 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://wangsuiri.blogbus.com/logs/35448074.htm ...

  5. Discuz X3.2 SEO设置 title 不支持空格的解决方法

    很多使用 Discuz X3.2 的同学都发现这么一个问题:在后台SEO设置-title设定的时候,即使你在连字符两侧输入了空格,在前台也显示不出来,很多同学纠结这个问题,今天终于找到了解决方法,在此 ...

  6. php对数组排序代码

    php对数组排序,介绍了和php,有关的知识.技巧.经验,和一些php源码等. 对数组排序 usort() 函数使用用户自定义的函数对数组排序. */ function cmp($a, $b) //用 ...

  7. JQuery 获取json数据$.getJSON方法的实例代码

    这篇文章介绍了JQuery 获取json数据$.getJSON方法的实例代码,有需要的朋友可以参考一下 前台: function SelectProject() { var a = new Array ...

  8. TCP相关知识

    1. TCP与TCP/IP协议族 TCP是TCP/IP协议族中运输层的一个协议.TCP/IP,即传输控制协议/网间协议,是一个工业标准的协议集,包含了运输层.网络层和链路层的协议,其结构如下图所示:其 ...

  9. auto和decltype

    auto 1.编译器通过分析表达式的类型来确定变量的类型,所以auto定义的变量必须有初始值. auto i=; //ok,i为整型 auto j; //error,定义时必须初始化. j=;     ...

  10. google api , using a refresh token to get the access token

    router.get('/refresh',function(req,res){ oauth2Client.credentials = { refresh_token: '1/RqVyL7yLBxws ...