Codeforces Round #232 (Div. 1) A 解题报告
A. On Number of Decompositions into Multipliers
题目连接:http://codeforces.com/contest/396/problem/A
大意:给定n(n<=500)个数ai(1<=ai<=10^9),得到他们的乘积m,问将m分解成n个数相乘,有多少种方法.
思路:显然每个质因数都是独立的,如果质因数pi出现了ci次,那么把它分到n个数中,就有C(ci+n-1,n-1)种方法,然后把所有因数的答案相乘就是结果。于是我们可以先预处理出来组合数。然后对每个ai进行分解因式,最后的复杂度O(n*sqrt(max(ai))).
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <set>
#include <queue>
#include <set>
#include <map>
#include <cstring>
#include <functional>
#include <cmath>
typedef long long ll;
using namespace std;
const ll mod = ;
map<ll,ll> cnt; int n;
ll a[];
ll c[][];
int main(){
freopen("in.txt","r",stdin);
ios::sync_with_stdio();
c[][] = ;
for(int i=;i<;i++){
for(int j=;j<=min(i,);j++){
if(j== || j==i)
c[i][j] = ;
else
c[i][j] = ( c[i-][j-] +c[i-][j] )%mod;
}
}
cin>>n;
for(int i=;i<n;i++){
cin>>a[i];
} for(int i=;i<n;i++){ for(ll j=;j*j<=a[i];j++){ if(a[i]%j==){
ll tmp = ;
while(a[i]%j==){
a[i]/=j;
tmp++; }
cnt[j]+=tmp; } }
if(a[i]!=)
cnt[a[i]]++; } ll ans = ; for(map<ll,ll>::iterator i = cnt.begin();i!=cnt.end();i++){
ll cc =(*i).second; ans = (ans*c[cc+n-][n-])%mod;
} cout<<ans%mod<<endl;
return ;
}
Codeforces Round #232 (Div. 1) A 解题报告的更多相关文章
- Codeforces Round 319 # div.1 & 2 解题报告
		Div. 2 Multiplication Table (577A) 题意: 给定n行n列的方阵,第i行第j列的数就是i*j,问有多少个格子上的数恰为x. 1<=n<=10^5, 1< ... 
- [Codeforces Round #194 (Div. 2)] Secret 解题报告 (数学)
		题目链接:http://codeforces.com/problemset/problem/334/C 题目: 题目大意: 给定数字n,要求构建一个数列使得数列的每一个元素的值都是3的次方,数列之和S ... 
- Codeforces Round #232 (Div. 2)  B. On Corruption and Numbers
		题目:http://codeforces.com/contest/397/problem/B 题意:给一个n ,求能不能在[l, r]的区间内的数字相加得到, 数字可多次重复.. 比赛的时候没有想出来 ... 
- Codeforces Round #232 (Div. 1)
		这次运气比较好,做出两题.本来是冲着第3题可以cdq分治做的,却没想出来,明天再想好了. A. On Number of Decompositions into Multipliers 题意:n个数a ... 
- Codeforces Round #232 (Div. 2)  D. On Sum of Fractions
		D. On Sum of Fractions Let's assume that v(n) is the largest prime number, that does not exceed n; u ... 
- Codeforces Round #231 (Div2) 迟到的解题报告
		题目A: 给一个火柴等式,可以从左边移动一根到右边,也可以从右边移到左边,但是不能移动“+”,”=“的火柴, 而且加法里面的数都要大于0(很重要的条件),基本上注意到这点的都过了,没注意的都被HACK ... 
- CodeForce---Educational Codeforces Round 3  The best Gift 解题报告
		对于这题笔者认为可以用数学排列来算,但是由于笔者很懒所以抄了一段大神的代码来交个大家了, 这位大神的基本想法就是通过记录各类书的数量,再暴力破解: 下面贴出这位大神的代码吧: #include< ... 
- Codeforces Round #232 (Div. 2) On Sum of Fractions
		Let's assume that v(n) is the largest prime number, that does not exceed n; u(n) is the smallest pri ... 
- Codeforces Round #232 (Div. 2) C
		C. On Number of Decompositions into Multipliers time limit per test 1 second memory limit per test 2 ... 
随机推荐
- Python之路,Day4 - Python基础4 (new版)
			Python之路,Day4 - Python基础4 (new版) 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ... 
- 如何在ASP.NET端获取屏幕宽度
			using System.Windows.Forms; 首先引用上面的命名空间. 然后在代码中获取屏幕信息.如下代码: System.Windows.Forms.Screen screen = Sys ... 
- (转)dedecms代码详解 很全面
			dedecms代码研究(1)开篇dedecms 相信大家一定都知道这个cms 系统,功能比较强大,有比较完善的内容发布,还有内容静态化系统,还有就是它有自己独特的标签系统和模板系统.而模板系统也是其他 ... 
- 认识CSS样式
			CSS全称为“层叠样式表 (Cascading Style Sheets)”,它主要是用于定义HTML内容在浏览器内的显示样式,如文字大小.颜色.字体加粗等. 如下列代码: p{ font-size: ... 
- backbone学习笔记(一)
			因为工作的需要,从今天起对backbone的学习过程做下记录. 学习计划: 1.1周看基本知识(2014/1/18-2014/1/25) 2.基本知识总结(2014/1/26) 3.半周按教程写hel ... 
- JavaScript设计模式之工厂模式
			一.工厂模式概念 工厂模式定义一个用于创建对象的接口,这个接口由子类决定实例化哪一个类.该模式使一个类的实例化延迟到了子类.而子类可以重写接口方法以便创建的时候指定自己的对象类型(抽象工厂). 这个模 ... 
- Web Services
			Web Services 1. Web Services基本规范概述 1.1. 什么是Web Services Web Services是为实现“基于Web无缝集成”的目标而提出的全新 ... 
- 素数判定 AC 杭电
			素数判定 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ... 
- 求数列的和 AC 杭电
			求数列的和 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ... 
- Linux文本操作三大利器总结:sed、awk、grep
			grep:(去除一行中需要的信息,同类与cut) grep全称是Global Regular Expression Print #常规用法 # grep -n root /etc/passwd :ro ... 
