POJ 3421 X-factor Chains
线型素数筛+质因素分解+组合数。
AC后发现这样做效率有点低。。766ms。
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<time.h> #include<iostream> #include<algorithm> #include<cmath> using namespace std;typedef long long LL; int tol; LL factor[100]; const int N = 2000001; LL prime[N] = {0},num_prime = 0; int isNotPrime[N] = {1, 1};void findfac(long long n) {for(int i=0; i<num_prime; i++){if(n%prime[i]!=0) continue;while(1){if(n==1||n%prime[i]!=0) break;factor[tol++]=prime[i];n=n/prime[i];}if(n==1) break;} }int num[100],tot; long long c[25][25];void init() {c[1][1]=1;for(int i=1; i<=20; i++) c[i][0]=1;for(int i=2; i<=20; i++){for(int j=1; j<=20; j++){c[i][j]=c[i-1][j-1]+c[i-1][j];}}for(long i = 2 ; i < N ; i ++){if(! isNotPrime[i])prime[num_prime ++]=i;for(long j = 0 ; j < num_prime && i * prime[j] < N ; j ++){isNotPrime[i * prime[j]] = 1;if( !(i % prime[j] ) ) break;}} }int main() {init();long long n;while(~scanf("%lld",&n)){if(n==1) {printf("%d %lld\n",1,1);continue;}tol=0;findfac(n);sort(factor,factor+tol);tot=0,num[tot]=1;for(int i=1;i<tol;i++){if(factor[i]==factor[i-1]) num[tot]++;else{tot++;num[tot]=1;}}tot++;int sum=tol;int ans1=tol;long long ans2=1;for(int i=0;i<tot;i++){ans2=ans2*c[sum][num[i]];sum=sum-num[i];}printf("%d %lld\n",ans1,ans2);}return 0; }
转载于:https://www.cnblogs.com/zufezzt/p/5373622.html
POJ 3421 X-factor Chains相关推荐
- 《挑战程序设计竞赛(第2版)》习题册攻略
本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...
- tomcat服务器配置文件虚拟路径,tomcat中如何配置虚拟路径
第一步:打开server.xml配置文件.在Host节点里写上该行代码: 如下图: 它的作用是只要路径以/upload开头它就会自动的匹配到E盘的upload文件夹下 数据库的存放路径就是上面红色的方 ...
- 挑战程序设计竞赛(第二章习题总结)
文章目录 搜索 Curling 2.0(POJ 3009) Meteor Shower(POJ 3669) Smallest Difference(POJ 2718) Hopscotch(POJ 30 ...
- 备战ccpc分站赛:秦皇岛和威海站(数论模块和dp模块)
挑战程序设计竞赛(第2版)练习题 tips:难度(个人主观判断): 简单* 简单但卡思维 ** 中 *** 中稍加思考 **** 难 ***** 1 . 记录结果再利用的"动态规划" ...
- 【POJ - 3048】Max Factor (数论,打表,水题)
题干: To improve the organization of his farm, Farmer John labels each of his N (1 <= N <= 5,000 ...
- POJ - 2248 Addition Chains(dfs+迭代加深)
题目链接:点击查看 题目大意:我们规定加法链有如下特点: 现在给出一个数n,求该数的最短加法链 题目分析:这个题首先我们可以枚举所有可能性,并且进行适当的剪枝: 当前长度大于等于最优解时回溯 当前值等 ...
- POJ 2248 Addition Chains
这一道题目用的仍然是DFS的方法.准确的说应该是Iterative Deepening Search, 关键在于理解,我们要找到的是最小长度,那么对应过来就是最小的深度.同时,还要理解, 如果当前深度 ...
- POJ 2248 算进 P110 Addition Chains
满足如下条件的序列X(序列中元素被标号为1.2.3-m)被称为"加成序列": 1.X[1]=1 2.X[m]=n 3.X[1]<X[2]<-<X[m-1]< ...
- POJ 2245 Addition Chains(算竞进阶习题)
迭代加深dfs 每次控制序列的长度,依次加深搜索 有几个剪枝: 优化搜索顺序,从大往下枚举i, j这样能够让序列中的数尽快逼近n 对于不同i,j和可能是相等的,在枚举的时候用过的数肯定不会再被填上所以 ...
最新文章
- TensorRT Samples: GoogleNet
- Selenium-switch_to_window出现删除线
- python的工资为什么这么低-Python为什么这么火 Python岗位薪资水平如何
- 使用CXF开发WebService程序的总结(一):什么是webservice
- php中静态方法的调用,php中静态方法和非静态方法如何相互调用?
- android开发java环境_搭建Android开发环境 - Android - mobile - JavaEye论坛
- PB-treeview基本属性事件函数
- js中in关键字的用法
- mysql的粗略学习
- GBA编程和汉化常用软件汇总
- android如何查看手机中的db文件,查看sqlite数据库的表结构
- 松下新一代电力线通信(PLC)技术经IEEE P1901.3工作小组批准成为基准规范
- 中国移动H1S-3光猫破解路由器桥接教程
- 做好演讲者的必备条件
- vivado ILA核使用教程
- 飞塔60d带宽_飞塔防火墙划分带宽 万兆防火墙
- 解决网页文字无法复制
- python while循环和for循环转换_Python的While循环和for循环,python,while
- 基于单片机波形发生器PCB原理图报告设计资料-基于单片机比赛计时计分电路仿真设计-基于单片机报警器与旋转灯设计-基于单片机八路数据电压采集报警控制系统-基于单片机病房呼叫系统控制系统设计【毕设课设资】
- 关于线性稳压器的五个设计细节
热门文章
- Linux Kernel代码艺术——数组初始化
- 再学 GDI+[77]: 区域(6) - GetRegionScans - 获取区域中的所有矩形
- (三) OpenCV仿射变换与透射变换(Affine and Perspective Transform)
- vc++数字图像处理 自适应二值化程序
- php脚本日志文件,php脚本-定期删除日志文件,删除历史日志 保留最近7天
- python main传参args,详解用Python处理Args的3种方法
- matlab现值与终值函数_个人家庭投资理财基础(二 单利、复利、终值、现值、内部收益率)...
- Java SE 9:Stream API的改进
- maven安装junit_JUnit安装Maven – JUnit 4和JUnit 5
- Python XML解析器– ElementTree