[問題] 試找出1~N 有幾種挑數字的方法(子集)不包

作者: asdfg1597860 (Jay)   2018-08-27 12:09:14
開發平台(Platform): (Ex: Win10, Linux, ...)
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
各位高手好 小弟寫了一個程式想解這個問題(政大解題系統上的題目)
但在最後一個查驗點失敗了
想請問各位高手能告訴小弟犯了什麼愚蠢錯誤
因為小弟看了很多次還是覺得可行
餵入的資料(Input):
1<=n<=10^7
預期的正確結果(Expected Output):
245459220446488920
錯誤結果(Wrong Output):
-1
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
#include <iostream>
using namespace std;
long long int pow(unsigned int a) {
if (a == 0)
return 1;
else
return 2* pow(a-1);
};
int main()
{
unsigned int input,odditem,evenitem;
while(cin>>input){
if (input % 2 == 0){
evenitem = (input / 2);
odditem = evenitem;
}
else {
evenitem = (input - 1) / 2;
odditem = (input + 1) / 2;
}
cout << pow(odditem) + pow(evenitem) - 1 << endl;
}
return 0;
}
補充說明(Supplement):
什麼數字都沒選也算一種
作者: john2007 (john)   2018-08-27 13:49:00
想法是錯的 n = 4的時候正確答案是8 你的輸出結果是7而用簡單的觀察法可以知道你2的覓次 碰到1e7會爆掉給個提示,用DP 取/不取的分法 應該解得出來{1, 4}
作者: cutekid (可愛小孩子)   2018-08-27 18:58:00
f(n) = f(n - 1) + f(n - 2)
作者: oToToT (屁孩)   2018-08-29 16:01:00
樓上那就是本題的答案啊,只是f(1)=2,f(2)=3
作者: Sidney0503 (Sidney0503)   2018-08-31 09:27:00
有Prob_Solve版

Links booklink

Contact Us: admin [ a t ] ucptt.com