hdu 3758 Factorial Simplification
这题主要是质因数分解!!
求出每个因子的幂,如果有负数,则输出-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的更多相关文章
- 题解报告:hdu 1124 Factorial(求N!尾数有多少个0。)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1124 Problem Description The most important part of a ...
- HDU 1124 Factorial (数论)
http://acm.hdu.edu.cn/showproblem.php? pid=1124 題目好長好長,好可怕,看完腎都萎了,以後肯定活不長.我可不能死在這種小事上,小灰灰我勵志死在少女的超短裙 ...
- hdu 1124 Factorial(数论)
题意: 求n!的尾0的个数 分析: 0一定是由因子2和5相乘产生的: 2的个数显然大于5的个数,故只需统计因子5的个数 n/5不能完全表示n!中5的个数(egg: 25),应该n/=5后,累加上n/2 ...
- HDU 1124 Factorial (阶乘后缀0)
题意: 给一个数n,返回其阶乘结果后缀有几个0. 思路: 首先将n个十进制数进行质因数分解,观察的得到只有2*5才会出现10.那么n!应含有min(2个数,5个数)个后缀0,明显5的个数必定比2少,所 ...
- [SinGuLaRiTy] 组合数学题目复习
[SinGuLaRiTy] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. [CQBZOJ 2011] 计算系数 题目描述 给定一个多项式( ...
- 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 ...
- Factorial(hdu 1124)
Description The most important part of a GSM network is so called Base Transceiver Station (BTS). Th ...
- HDU——PKU题目分类
HDU 模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 ...
- 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 ...
随机推荐
- Fedora 20 创建桌面快捷方式
创建desktop文件 sudo touch /usr/share/applications/sublime.desktop 添加内容 [Desktop Entry] Encoding=UTF-8 N ...
- iOS获取汉字的拼音
在iOS开发中经常涉及到汉字的排序,最常见的就是需要根据首字母的字符顺序排列,比如常见的通讯录等.总结出来,大致可以分为两种方法,其中参考文献[1]中提供的方法十分复杂,利用查表的方法是先,并且代码量 ...
- [Apache] 2.2与2.4版本在设置虚拟域名时的小差别
Apache服务器配置虚拟步骤: 1.在httpd.conf中将附加配置文件httpd-vhosts.conf包含进来,接着在httpd-vhosts.conf中写入如下配置: #LoadModule ...
- [转]AIX下调整分区大小
AIX下调整文件系统大小 - [work] 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://wangsuiri.blogbus.com/logs/35448074.htm ...
- Discuz X3.2 SEO设置 title 不支持空格的解决方法
很多使用 Discuz X3.2 的同学都发现这么一个问题:在后台SEO设置-title设定的时候,即使你在连字符两侧输入了空格,在前台也显示不出来,很多同学纠结这个问题,今天终于找到了解决方法,在此 ...
- php对数组排序代码
php对数组排序,介绍了和php,有关的知识.技巧.经验,和一些php源码等. 对数组排序 usort() 函数使用用户自定义的函数对数组排序. */ function cmp($a, $b) //用 ...
- JQuery 获取json数据$.getJSON方法的实例代码
这篇文章介绍了JQuery 获取json数据$.getJSON方法的实例代码,有需要的朋友可以参考一下 前台: function SelectProject() { var a = new Array ...
- TCP相关知识
1. TCP与TCP/IP协议族 TCP是TCP/IP协议族中运输层的一个协议.TCP/IP,即传输控制协议/网间协议,是一个工业标准的协议集,包含了运输层.网络层和链路层的协议,其结构如下图所示:其 ...
- auto和decltype
auto 1.编译器通过分析表达式的类型来确定变量的类型,所以auto定义的变量必须有初始值. auto i=; //ok,i为整型 auto j; //error,定义时必须初始化. j=; ...
- google api , using a refresh token to get the access token
router.get('/refresh',function(req,res){ oauth2Client.credentials = { refresh_token: '1/RqVyL7yLBxws ...