线型素数筛+质因素分解+组合数。

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相关推荐

  1. 《挑战程序设计竞赛(第2版)》习题册攻略

    本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...

  2. tomcat服务器配置文件虚拟路径,tomcat中如何配置虚拟路径

    第一步:打开server.xml配置文件.在Host节点里写上该行代码: 如下图: 它的作用是只要路径以/upload开头它就会自动的匹配到E盘的upload文件夹下 数据库的存放路径就是上面红色的方 ...

  3. 挑战程序设计竞赛(第二章习题总结)

    文章目录 搜索 Curling 2.0(POJ 3009) Meteor Shower(POJ 3669) Smallest Difference(POJ 2718) Hopscotch(POJ 30 ...

  4. 备战ccpc分站赛:秦皇岛和威海站(数论模块和dp模块)

    挑战程序设计竞赛(第2版)练习题 tips:难度(个人主观判断): 简单* 简单但卡思维 ** 中 *** 中稍加思考 **** 难 ***** 1 . 记录结果再利用的"动态规划" ...

  5. 【POJ - 3048】Max Factor (数论,打表,水题)

    题干: To improve the organization of his farm, Farmer John labels each of his N (1 <= N <= 5,000 ...

  6. POJ - 2248 Addition Chains(dfs+迭代加深)

    题目链接:点击查看 题目大意:我们规定加法链有如下特点: 现在给出一个数n,求该数的最短加法链 题目分析:这个题首先我们可以枚举所有可能性,并且进行适当的剪枝: 当前长度大于等于最优解时回溯 当前值等 ...

  7. POJ 2248 Addition Chains

    这一道题目用的仍然是DFS的方法.准确的说应该是Iterative Deepening Search, 关键在于理解,我们要找到的是最小长度,那么对应过来就是最小的深度.同时,还要理解, 如果当前深度 ...

  8. 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]< ...

  9. POJ 2245 Addition Chains(算竞进阶习题)

    迭代加深dfs 每次控制序列的长度,依次加深搜索 有几个剪枝: 优化搜索顺序,从大往下枚举i, j这样能够让序列中的数尽快逼近n 对于不同i,j和可能是相等的,在枚举的时候用过的数肯定不会再被填上所以 ...

最新文章

  1. TensorRT Samples: GoogleNet
  2. Selenium-switch_to_window出现删除线
  3. python的工资为什么这么低-Python为什么这么火 Python岗位薪资水平如何
  4. 使用CXF开发WebService程序的总结(一):什么是webservice
  5. php中静态方法的调用,php中静态方法和非静态方法如何相互调用?
  6. android开发java环境_搭建Android开发环境 - Android - mobile - JavaEye论坛
  7. PB-treeview基本属性事件函数
  8. js中in关键字的用法
  9. mysql的粗略学习
  10. GBA编程和汉化常用软件汇总
  11. android如何查看手机中的db文件,查看sqlite数据库的表结构
  12. 松下新一代电力线通信(PLC)技术经IEEE P1901.3工作小组批准成为基准规范
  13. 中国移动H1S-3光猫破解路由器桥接教程
  14. 做好演讲者的必备条件
  15. vivado ILA核使用教程
  16. 飞塔60d带宽_飞塔防火墙划分带宽 万兆防火墙
  17. 解决网页文字无法复制
  18. python while循环和for循环转换_Python的While循环和for循环,python,while
  19. 基于单片机波形发生器PCB原理图报告设计资料-基于单片机比赛计时计分电路仿真设计-基于单片机报警器与旋转灯设计-基于单片机八路数据电压采集报警控制系统-基于单片机病房呼叫系统控制系统设计【毕设课设资】
  20. 关于线性稳压器的五个设计细节

热门文章

  1. Linux Kernel代码艺术——数组初始化
  2. 再学 GDI+[77]: 区域(6) - GetRegionScans - 获取区域中的所有矩形
  3. (三) OpenCV仿射变换与透射变换(Affine and Perspective Transform)
  4. vc++数字图像处理 自适应二值化程序
  5. php脚本日志文件,php脚本-定期删除日志文件,删除历史日志 保留最近7天
  6. python main传参args,详解用Python处理Args的3种方法
  7. matlab现值与终值函数_个人家庭投资理财基础(二 单利、复利、终值、现值、内部收益率)...
  8. Java SE 9:Stream API的改进
  9. maven安装junit_JUnit安装Maven – JUnit 4和JUnit 5
  10. Python XML解析器– ElementTree