日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

反素数(luogu 1463)

發布時間:2024/10/12 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 反素数(luogu 1463) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

對于任何正整數x,其約數的個數記作g(x)。例如g(1)=1、g(6)=4。

如果某個正整數x滿足:g(x)>g(i) 0<i<x,則稱x為反質數。例如,整數1,2,4,6等都是反質數。

現在給定一個數N,你能求出不超過N的最大的反質數么?

輸入輸出格式

輸入格式:

?

一個數N(1<=N<=2,000,000,000)。

?

輸出格式:

?

不超過N的最大的反質數。

?

輸入輸出樣例

輸入樣例
1000 輸出樣例
840

思路:

找到反質數的規律,滿足以下三個引理即可

?

引理 1 :1 - N 中最大的反素數,就是1 - N中約數最多中最小的一個 .

?

引理 2 :1 - N 中任何數的不同質因子都不會超過 10 個,且所有質因子總和不超過 30 .

( reason: 231>2*109?)

?

引理 3 : x 的質因子是連續的若干個最小的質數,并且指數單調遞減

?

都是很顯然的結論(如果讀懂了題意)

?

code

#include<stdio.h> #include<algorithm> #define ll long long using namespace std; int pri[15]={0,2,3,5,7,11,13,17,19,23,29}; int mxn; ll n,s,ans;void dfs(ll m,int x,int k,int d) {if((k>mxn) || (k==mxn && m<ans)) {ans=m,mxn=k;}int j=0,nk;ll i=m;while(j<d) {++j;if(n/i<pri[x]) break;nk=k*(j+1);i=i*pri[x];if(i<=n) dfs(i,x+1,nk,j);}}int main() {scanf("%lld",&n);dfs(1,1,1,11);printf("%lld",ans);return 0; }

?

轉載于:https://www.cnblogs.com/qseer/p/9780173.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的反素数(luogu 1463)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。