• [luogu1463 HAOI2007] 反素数 (约数)


    传送门

    Description

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

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

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

    Input

    一个数N(1<=N<=2,000,000,000)。

    Output

    不超过N的最大的反质数。

    Sample Input

    1000

    Sample Output

    840

    Solution

    题目要求的是1~n中约数最多的且最小的数
    那么思路就是在约数相同时找尽量小的数
    然后暴搜qwq。。

    Code

    //By Menteur_Hxy
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<iostream>
    #include<algorithm>
    #define F(i,a,b) for(register LL i=(a);i<=b;i++)
    using namespace std;
    typedef long long LL;
    
    LL n,ma,ans;
    LL pri[20]={0,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59};
    
    void dfs(LL now,LL cnt,LL num,LL d) {
    	if(num>ma||(num==ma&&now<ans)) ma=num,ans=now;
    	LL ret=now;
    	F(i,1,d) {
    		int reg=num*(i+1); ret*=pri[cnt];
    		if(ret<n) dfs(ret,cnt+1,reg,i);
    		else break;
    	}
    } 
    
    int main() {
    	scanf("%lld",&n);
    	dfs(1,1,1,30);
    	printf("%lld",ans);
    	return 0;
    }
    
    版权声明:本文为博主原创文章,未经博主允许不得转载。 博主:https://www.cnblogs.com/Menteur-Hxy/
  • 相关阅读:
    内部类
    四种权限修饰符
    final关键字
    多态
    关于接口
    c语言学习
    嵌入式-文件I/O
    嵌入式-基础三-打印-粘贴
    嵌入式-基础二
    嵌入式-基础一
  • 原文地址:https://www.cnblogs.com/Menteur-Hxy/p/9365180.html
Copyright © 2020-2023  润新知