題目鏈結:
題目大意:設函式f(x)表示x的約數個數。對於乙個正整數x,若滿足任意09。
題目分析:
1.首先,1 ~ n的最大反質數一定是1 ~ n中約數個數最多的數中最小的乙個。下面給出證明:
2.x為反質數的必要條件是:x分解質因數後可以寫成2c1 * 3c2 * 5c3 * 7c4 * 11c5 * 13c6 * 17c7 * 19c8 * 23c9 * 29c10。並且c1≥c2≥c3≥c4≥c5≥c6≥c7≥c8≥c9≥c10。下面給出證明:
3.綜上,我們只需要dfs搜尋答案即可,因為實際上的搜尋範圍很小,所以並不會超時。
正解程式:
#include
#include
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
const ll maxn=
100010
; ll prime[maxn/10]
,count1=
0,n;
bool vis[maxn]
;void
oula()
}}ll ans=
0x7fffffff
,max=-1
;void
dfs(ll k,ll val,ll last,ll times)
else
if(max==times)
ans=
min(val,ans)
;for
(ll i=
1;i<=last;i++)}
intmain()
python打反素數 反素數求解 反素數打表
問題描述 對於任何正整數x,起約數的個數記做g x 例如g 1 1,g 6 4.如果某個正整數x滿足 對於任意i 0 現在給乙個n,求出不超過n的最大的反素數.比如 輸入1000 輸出 840 思維過程 求 1.n 中約數在大的反素數 求約數最多的數 如果求約數的個數 756 2 2 3 3 7 1...
PAT 1013 數素數 解題報告
1013 數素數 20分 令 p i 表示第 i 個素數。現任給兩個正整數 m n 10 4 請輸出 p m 到 p n 的所有素數。輸入在一行中給出 m 和 n,其間以空格分隔。輸出從 p m 到 p n 的所有素數,每 10 個數字佔 1 行,其間以空格分隔,但行末不得有多餘空格。5 2711 ...
反素數求解 反素數打表
問題描述 對於任何正整數x,起約數的個數記做g x 例如g 1 1,g 6 4.如果某個正整數x滿足 對於任意i 0現在給乙個n,求出不超過n的最大的反素數.比如 輸入1000 輸出 840 思維過程 求 1.n 中約數在大的反素數 求約數最多的數 如果求約數的個數 756 2 2 3 3 7 1 ...