zoukankan      html  css  js  c++  java
  • [POI2002] 反素数

    题目描述

    对于任何正整数x,其约数的个数记作g(x)。例如g(1)=1、g(6)=4。

    如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数。例如,整数1,2,4,6等都是反质数。

    现在给定一个数N,求出不超过N的最大的反质数

    求1~N最大反素数 即其1~N中约数个数最多的一个数最小

    • 1~N中任何数的不同质因子都不会超过3个,且其质因子的指数总和不会超过30

    • 反素数x的质因子是连续的若干个最小的质数,并且指数单调递减

      #include<bits/stdc++.h>
      using namespace std;
      #define ll long long
      const int N=300+5,M=150+5,inf=0x3f3f3f3f,P=19650827;
      ll n,mx=0,ans=0;
      int p[20]={1,2,3,5,7,11,13,17,19,23,29,31,37};
      template <class t>void rd(t &x){
          x=0;int w=0;char ch=0;
          while(!isdigit(ch)) w|=ch=='-',ch=getchar();
          while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
          x=w?-x:x;
      }
      
      void find(ll nw,int pos,int cnt,int lim){
      	if(cnt>mx||(cnt==mx&&nw<ans)) ans=nw,mx=cnt;
      	ll i=nw;int j=0;
      	while(j<lim){
      		++j;
      		if(n/i<p[pos]) break;
      		i*=p[pos];
      		if(i<=n) find(i,pos+1,cnt*(j+1),j);
      	}
      }
      
      int main(){
      //	freopen("in2.txt","r",stdin);
      	//freopen("xor.out","w",stdout);
      	rd(n);
      	find(1,1,1,30);
      	printf("%lld",ans);
      	return 0;
      }
      
  • 相关阅读:
    C#多态的实现
    C#虚方法
    stm32HAL库中串口部分各个传输和接收函数分析
    ASC字符串取模网址
    STM32F1高级定时器做普通PWM输出配置(例TIM1)
    maven 插件说明
    mac 离线安装yarn
    Tomcat 远程调试
    杀死 tomcat 进程的脚本
    mysql 安装
  • 原文地址:https://www.cnblogs.com/lxyyyy/p/11400374.html
Copyright © 2011-2022 走看看