整數劃分 HYSBZ 1263 FFT

2021-09-30 19:55:35 字數 993 閱讀 8091

題目  題意

給你乙個n 讓你拆成若干數 使他們乘積最大

思路如果能整除3 拆3最大 否則拆1個或2個2 在拆3

算乘積可以用大數模擬 學fft學啥了 直接用了fft

#include using namespace std;

typedef long long ll;

const double pi = acos(-1.0);

struct complex

complex operator - (const complex &b) const

complex operator + (const complex &b) const

complex operator * (const complex &b) const

};void change(complex y, int len)

k = len/2;

while(j >= k)

if(j < k)

}return ;

}void fft(complex y,int len,int on)

m = n / 3;

int len = 1 << 13;

x[0] = complex(3,0);

y[0] = complex(1,0);

for(int i = 1; i < len; i++)

x[i] = complex(0,0);

for(int i = 1; i <= len; i++)

y[i] = complex(0,0);

fft(x,len,1);

fft(y,len,1);

// cout<0&&sum[len] == 0)

len--;

printf("%d\n",len+1);

for(int i = len,j = 0; i >= 0; i--,j++)

return 0;

}

bzoj1263 SCOI2006 整數劃分

傳送門 我們可以求出滿足xx 1 x 1 x 且xx 1 x 1 x 的整數x 然後手玩一下發現x 3 所以要盡可能的多拆出3。不難得到以下方案 1.n 3 0 拆成n 3個3 2.n 3 1 拆成n 3 1個3,2個2 3.n 3 2 拆成n 3個3,1個2 高精度一發水過。uses math v...

bzoj1263 SCOI2006 整數劃分

題目 數學結論題 先考慮全分成實數,根據基本不等式,這些數要全部相等才最大。則設其為x,求x n x 最大,具體證明我當然不會 據說是先取對數,在證明 結論是,x取自然對數時最大,即e,2.7幾幾幾。最接近的整數為3,所以盡量取3,不夠取2,顯然不取1。include using namespace...

BZOJ1263 SCOI2006 整數劃分

從檔案中讀入乙個正整數n 10 n 31000 要求將n寫成若干個正整數之和,並且使這些正整數的乘積最大。例如,n 13,則當n表示為4 3 3 3 或2 2 3 3 3 時,乘積 108為最大。只有乙個正整數 n 10 n 31000 133 108由於對於 a 1,b 1 有 ab geq a ...