1888-jerry99的数列--factorial
- 1
- #define _CRT_SECURE_NO_WARNINGS 1//jerry99的数列
- 2 #include<bits/stdc++.h>
- 3 int prime[40000] = { 0 };
- 4 int pri[6000] = { 0 };
- 5 int nums[3000] = { 0 };
- 6 int mem[3000] = { 0 };
- 7 int jiecheng[40000*1000] = { 0 };
- 8 void pre() {//标记质数1~50000
- 9 prime[0] = prime[1] = 1;
- 10 for (int i = 2; i < 40000; i++) {
- 11 for (int j = 2 * i; j < 40000; j += i) {
- 12 prime[j] = 1;
- 13 }
- 14 }
- 15 int k = 0;
- 16 for (int i = 0; i < 40000; i++) {
- 17 if (!prime[i])
- 18 pri[k++] = i;//存放在num数组里备用
- 19 }
- 20 }
- 21
- 22
- 23 int div2(int n) {
- 24 memset(mem, 0, 6000);
- 25 int k = 0, d, num = 0, origin = n;
- 26 for (int i = 0; n != 1; i++) {
- 27 d = pri[i];
- 28 while (n % d == 0) {
- 29 mem[k]++;
- 30 n /= d;
- 31 }
- 32 k++;
- 33 if (k >= 5133&&n>50000) return 1;
- 34 }
- 35 return 0;
- 36 }
- 37 int main() {
- 38 pre();//筛出质数
- 39 //提前分解好1~20000阶乘质因数
- 40
- 41
- 42 int t, n, m;
- 43 for (n = 1; n < 40000; n++) {
- 44 int k = 0, d, num = 0, origin = n;
- 45 for (int i = 0; pri[i]<=n; i++) {
- 46 d = pri[i];
- 47 while (origin != 1&&origin%d==0) {
- 48 nums[k]++;
- 49 origin /= d;
- 50 }
- 51 k++;
- 52 }
- 53 for (int p = 0; p < k; p++) {
- 54 *(jiecheng+1000*n+p) += (*(jiecheng+1000*(n-1)+p)+ nums[p]);//递推地计算质因数分解结果
- 55 //printf("%d ", jiecheng[n][p]);//数组一维化
- 56 }//printf("\n");
- 57 memset(nums, 0, 3000*4);
- 58 }
- 59 for (int i = 1; i < 10; i++) {
- 60 for (int j = 0; j < 10; j++) {
- 61 printf("%d ", jiecheng[i][j]);
- 62 }printf("\n");
- 63 }
- 64 scanf("%d", &t);
- 65 int judge;
- 66 while (t > 0) {
- 67 memset(mem, 0, 3000*4);
- 68 scanf("%d%d", &n, &m);//n分母,m分子
- 69 judge = div2(n);//把分母质因数分解
- 70
- 71 if (judge&&n>40000) {//如果n分解后的质因数是个超级大(>50000)的质数
- 72 if (m < n) printf("0\n");
- 73 else {
- 74 printf("%d\n", m - n + 1);
- 75 }
- 76 }
- 77 else {//小于50000的质数或者不是质数的10^9以内的
- 78 int cnt, j = 0;
- 79 for (cnt = 1; cnt < n;) {
- 80 //printf("%d ", *(jiecheng + 1000 * cnt + j));
- 81 while (mem[j] > * (jiecheng + 1000 * cnt + j)) {
- 82 cnt++;//每一位幂次进行比较
- 83 }
- 84
- 85 //printf("%d ", *(jiecheng + 1000 * cnt + j));
- 86 if (mem[j] <= *(jiecheng + 1000 * cnt + j)) {
- 87 j++;//比较完一个每次进入下一个幂次
- 88 }
- 89 if (!mem[j] && j == n) {
- 90 break;
- 91 }
- 92
- 93
- 94 }
- 95 /*for (int i = 1; i < n; i++) {
- 96 for (int j =0 ; j < 10; j++) {
- 97 printf("%d ", *(jiecheng +1000 * i + j));
- 98 }
- 99 }*/
- 100 //printf("比%d大的最小阶乘是 %d !\n", n, cnt);
- 101 if (cnt > m + 1) printf("0\n");
- 102 else printf("%d\n", m - cnt + 1);
- 103 t--;
- 104 }
- 105 }
- 106 return 0;
- 107 }
- 108
1888-jerry99的数列--factorial的更多相关文章
- Factorial数列的几种实现方式
斐波那契数列很常见,实现的方法主要有递归,for,栈等,下面给出代码 import java.math.BigInteger; import java.util.Scanner; import jav ...
- c语言求平面上2个坐标点的直线距离、求俩坐标直线距离作为半径的圆的面积、递归、菲波那次数列、explode
#include <stdio.h> #include <math.h> #include <string.h> char explode( char * str ...
- php实现斐波那契数列以及由此引起的联想
斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一 ...
- Python中的函数递归思想,以及对比迭代和递归解决Fibonacci数列
什么是递归?简单的说就是:函数自身调用自身. “普通程序员用迭代,天才程序员用递归” 虽然递归 在运行时会不断出栈压栈,调用底层的寄存器,造成空间上的占用以及时间上的缓慢, 但在一些算法上面仍然是递归 ...
- java 递归及其经典应用--求阶乘、打印文件信息、计算斐波那契数列
什么是递归 我先看下百度百科的解释: 一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归的.用递归过程定义的函数,称为递归函数,例如连加.连乘及阶乘等.凡是递归的函数,都是可计算的,即 ...
- C#求斐波那契数列第30项的值(递归和非递归)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- BZOJ1500[NOI2005]维修数列
Description Input 输入的第1 行包含两个数N 和M(M ≤20 000),N 表示初始时数列中数的个数,M表示要进行的操作数目.第2行包含N个数字,描述初始时的数列.以下M行,每行一 ...
- PAT 1049. 数列的片段和(20)
给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段.例如,给定数列{0.1, 0.2, 0.3, 0.4},我们有(0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1 ...
- [LeetCode] Factorial Trailing Zeroes 求阶乘末尾零的个数
Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in log ...
随机推荐
- Linux基础三:用户和组
三.用户和组 1.概念 (1).用户概念: 用户是用来运行某一些进程.拥有某一些文件或目录. 在Linux里面,用户分成三大类:root用户.系统用户.普通用户. 用户是用UID来唯一标识身份的,且r ...
- Solon 1.5.67 发布,增加 GraalVm Native 支持
Solon 已有120个生态扩展插件,此次更新主要为细节打磨: 添加 solon.extend.graalvm 插件,用于适配 graalvm native image 模式 从此,solon 进入 ...
- [atAGC045F]Division into Multiples
令$d=\gcd(a,b)$,可以发现$c|(ax+by)$等价于$lcm(c,d)|(ax+by)$,因此不妨令$c'=lcm(c,d)$,然后将$a$.$b$和$c$同时除以$d$ 接下来设$(a ...
- nginx安装与配置1-nginx安装
反向代理: 客户端不需要配置就可以访问,将请求发送到反向代理服务器, 由反向代理服务器选择目标服务器获取数据,再返回客户端,对外暴露代理服务器地址,隐藏真实ip 负载均衡: 客户端请求nginx等服务 ...
- 贪心/构造/DP 杂题选做Ⅲ
颓!颓!颓!(bushi 前传: 贪心/构造/DP 杂题选做 贪心/构造/DP 杂题选做Ⅱ 51. CF758E Broken Tree 讲个笑话,这道题是 11.3 模拟赛的 T2,模拟赛里那道题的 ...
- 洛谷 P4931 - [MtOI2018]情侣?给我烧了!(加强版)(组合数学)
洛谷题面传送门 A 了这道题+发这篇题解,就当过了这个七夕节吧 奇怪的过节方式又增加了 首先看到此题第一眼我们可以想到二项式反演,不过这个 \(T\) 组数据加上 \(5\times 10^6\) 的 ...
- linux常用目录和文件解析
1. 一级目录 /dev 设备目录 /etc 系统配置及服务配置文件.启动命令的目录 /proc 显示内核及进程信息的虚拟文件系统 /tmp 临时文件目录 /home 普通用户家目录 /root 超级 ...
- shell 脚本的基本定义
注意不能有控制,指令之间 [1]shell脚本的基础知识 (1)shell脚本的本质 编译型语言 解释型语言 shell脚本语言是解释型语言 shell脚本的本质 shell命令的有序集合 (2)sh ...
- mysql 中@ 和 @@的区别
@x 是 用户自定义的变量 (User variables are written as @var_name)@@x 是 global或session变量 (@@global @@session )@ ...
- PowerToys插件扩展(类似Alfred)
在mac系统除了自带的Spotlight还有一个很好用的工具叫Alfred image 在windows系统也有一个很好用的工具叫PowerToys,是微软的一个开源项目 image https:// ...