-
ps:**我之前做的另外乙個問題稍微修改了一下,具體演算法用的是背包的變形演算法。
**:#include
#include
#include
const int maxx = 8000;
using namespace std;
long opt[maxx];
const int coin[5] = ;
int prime[1000];
void init():總共建立 160 個質量表 (1 1000)。
int w=1;
int vis = 0;
prime[0] = 2;
for(int i=3;i<=1000;i++)for(int j=2;j*j<=i;j++)if(i%j==0)
if(!vis)
prime[w++]= i;
vis = 0;
int find() 0-1 背包問題通過積累來解決。
init();
for(int n=10;;n++)
memset(opt,0,sizeof(opt));
opt[0] = 1;
for(int i=0;i<160;i++)for(int j=prime[i];j<=n;j++)if(opt[j-prime[i]])
opt[j]+=opt[j-prime[i]];
if(opt[n]>=5000) return n;
return 0;
int main()
init();
cout
-
在 5,000 多種拆分方法中找到最小的數字。
不太明白你在問什麼? 尋找號碼? 有5000種拆分方法。
-
1. 首先開啟它,建立乙個新的 VC 專案,並新增標頭檔案。
2. 增加主功能,如下圖所示。
3. 然後定義兩個變數 n 和 i,如下圖所示。
4. 然後使用 scanf 為 n 分配乙個值,並使用 for 迴圈。
5.然後使用while作為內迴圈,並使用printf列印i。
6.最後使用if條件語句執行程式,如下圖所示,將正整數分解成乙個品質因數完成。
-
你不明白什麼。
-
貼在你身上:long long r1( int k, int m ) 另外,不要以為別人會給你乙個完整的程式,提高你程式設計能力的秘訣就是先程式設計再程式設計。
素數大多是陣列或指向陣列的指標,素數+i指向陣列的第i個元素,(primes + i)取第i個元素的值,相當於primes[i]。 >>>More