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 ...
随机推荐
- linux 定时执行任务 crontab
欲编写定时任务访问网页和打开图片 原来写法为 #!/bin/bash #可以执行 echoecho "Hello" > dir/file.txt #不可以执行 xdg-ope ...
- RHEL安装docker-compose
Note that Compose 1.5.2 requires Docker 1.7.1 or later. pip install docker-compose==1.5.2 Note that ...
- php实现图片加密解密,支持加盐
一个简单的图片加解密函数 使用client跑,不要使用浏览器跑 qq845875470 ,技术交流 <?php /** * Created by hello. * User: qq 845875 ...
- 1105. Spiral Matrix (25)
This time your job is to fill a sequence of N positive integers into a spiral matrix in non-increasi ...
- MySQL 多实例数据库还原脚本-备份集与端口对应
版本:5.5.14 OS: ConetOS 6.3 1.创建recover.sh [root@yoon export]# vi recover.sh #!/bin/bash bakdir=/exp ...
- 收起虚拟键盘的各种方法 -- IOS
使用虚拟键盘来输入资讯,是 iOS 的重要互动方式之一,虚拟键盘通常会自动出现在可以编辑的 UITextField 或是 UITextView 的编辑事件中,叫出键盘固然容易,但是要把它收起来,可就没 ...
- LCA专题
标签(空格分隔): LCA 我的个人网站挂了,最近就先用这个来写博客吧.以后争取在这个网站写一些与OI无关的个人爱好的东西. 题目来源:code[VS] 倍增--在线算法 用 $f[i][j]$ 记录 ...
- NodeJS学习笔记(转载)
前言 让nodeJS跑起来 文件结构 node_modules/ejs app.js 路由 路由规则 添加路由规则 注册功能 MongoDB 安装MongoDB 链接MongoDB 结语 前言 最近同 ...
- 10.31Daily Scrum
人员 任务分配完成情况 明天任务分配 王皓南 主网页的框架搭建,任务编号752 研究代码,学习相应语言,讨论设计思路 申开亮 学习数据库的操作,任务编号753 研究代码,学习相应语言,讨论设计思路 王 ...
- 如何编写好的jQuery代码
本文就是自己看,如果您不小心进到了这里,请看源处,是这个作者翻译的:http://blog.sae.sina.com.cn/archives/4157 讨论jQuery和javascript性能的文章 ...