vivian』s problem
time limit: 1000ms
memory limit: 30000k
題意:給100個int以內的數,每個數可以選0-10次乘到m裡,加起來必須至少選1次,初始m=1。要使得m的約數和n是2的整數次冪,並輸出最大冪次。
做法:將m分解質因數,舉例說明n的計算方法:
m=2^3x5x7^4
約數和n為:(1+2+4+8)x(1+5)x(1+7+7^2+7^3+7^4)
然後發現形如2^p-1的不同素數的乘積的n是2的整數冪,這種素數稱為梅森素數。
範圍內共有梅森素數8個,狀壓dp即可。
關鍵是要知道結論吧。
**:
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
ll ans;
bool judge[100000];
ll prime[50000];
ll mason[20];
ll masont[20];
ll totprime;
ll totmason;
bool dp[105][300];
int k;
bool isprime(ll num)
bool cal(ll num, ll &pos)
}if(num>1)return
false;
return
true;
}bool pipei(ll tar, ll par, ll tur)
return dp[tur-1][lef];
}}ll cost(ll pos)
int main()
}totmason=0;
for(int i=2;i<=31;i++)
}//printf("%lld\n",totmason);
while(~scanf("%d", &k))
else
}ll ans=0;
for(int j=0;j<(1
<<8);j++)
if(ans)printf("%lld\n", ans);
else
printf("no\n");
}}
梅森素數彙總
第9個梅森素數 當p 61時,m 61 2 61 1,位數為19位,由pervushin發現於公元1883年。第10個梅森素數 當p 89時,m 89 2 89 1,位數為27位,由powers發現於公元1911年。第11個梅森素數 當p 107時,m 107 2 107 1,位數為33位,由pow...
數論 梅森素數
定義 lucas lehmer判定法 判定乙個梅森數是否是梅森素數 設p是素數,第p個梅森數為m p 為2 p 1,r1 4,對於k 2 r k r k 1 2 2 modm p 0 r k m p 可以得到r k 序列,則有m p 是素數,當且僅當r p 1 0 mod m p 如下 includ...
梅森素數c 實現
梅森數 mersenne prime 指的是形如2 n 1的正整數,其中指數 n 是素數,即為。如果乙個梅森數是素數,則稱其為梅森素數。當n 2,3,5,7時,都是素數,但n 11時,顯然不是梅森素數。1722年,瑞士數學大師尤拉證明了 是乙個素數,它共有 10 位數,成為當時世界上已知的最大素數。...