題目描述
對於任何正整數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的最大的反質數。
輸入輸出樣例
輸入樣例#1:
1000
輸出樣例#1:
840【分析】
唯一分解定理+暴搜+剪枝
唯一分解定理可以計算約數個數,觀察後發現最多用到前12個質數,然後列舉每個素數的次數。
剪枝:小素數的次數》大素數的次數答案更優
【**】
//[sdoi]反素數
#include
#include
#include
#include
#define ll long long
#define m(a) memset(a,0,sizeof a)
#define fo(i,j,k) for(i=j;i<=k;i++)
using
namespace
std;
int p[20]=;
ll pow[20][50],t;
int n,ans;
inline
void dfs(int dep,int num,ll now,int last) //num:因子個數
}int main()
dfs(1,1,1,32);
printf("%d\n",ans);
return
0;}
洛谷P1463 反素數
對於任何正整數x,其約數的個數記作g x 例如g 1 1 g 6 4。如果某個正整數x滿足 g x g i 0現在給定乙個數n,你能求出不超過n的最大的反質數麼?乙個數n 1 n 2,000,000,000 不超過n的最大的反質數。輸入 1 1000輸出 1 840思路 菜雞第一次學習反素數,碼點字...
洛谷P1463 反素數
題目大意 給定 n 2e9 求不超過 n 的最大反素數。題解 引理1 不超過 2e9 的數的質因子分解中,最多有 10 個不同的質因子,且各個質因子的指數和不超過30。引理2 題目要求的最大反素數,實際上是求不超過 n 的數中因子數最多的數的集合中最小的那個數。引理3 通過引理 2 以及交換證明法可...
洛谷 P2434 SDOI2005 區間
現給定n個閉區間 ai,bi 1 i n。這些區間的並可以表示為一些不相交的閉區間的並。你的任務就是在這些表示方式中找出包含最少區間的方案。你的輸出應該按照區間的公升序排列。這裡如果說兩個區間 a,b 和 c,d 是按照公升序排列的,那麼我們有a b請寫乙個程式 讀入這些區間 計算滿足給定條件的不相...