Re: [問題] pow奇怪的情況...

看板C_and_CPP (C/C++)作者 (十三)時間16年前 (2009/05/10 14:44), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/2 (看更多)
2ms的做法是根本不需要pow 用陣列儲存再減 不過既然有找到公式 我改給你 0ms #include<stdio.h> #include<math.h> int main(void) { unsigned long long int n; int k; while(scanf("%d" , &k) != EOF) { n = ( ( ( unsigned long long )(pow(2, (k + 1)) + 0.5 ) - 1) ) * 2; if(k >= 10) { n = n - (( ( ( unsigned long long ) (pow(2, (k - 9)) + 0.5 ) ) - 1) * 2); } printf("%llu\n" , n); } return 0; } Bleed ※ 引述《frsnic (路人)》之銘言: : 就是我用不一樣的括號做pow會得到wa跟ac = = : 原始題目 http://zerojudge.tw/ShowProblem?problemid=d213 : WA (當輸入是53的時候 會wa) : 與正確輸出不相符(line:54) : 您的答案為: 35993612646875138 : 正確答案為: 35993612646875136 : (我只能說非常邪門 我在windows跟fedora上跑都是正確答案 丟到zerojudge上就錯了...) : #include<stdio.h> : #include<math.h> : int main(void) : { : unsigned long long int n, k; : while(scanf("%llu\n" , &k) != EOF) : { : n = (pow(2, (k + 1)) - 1) * 2; : if(k >= 10) : { : n = n - ((pow(2, (k - 9)) - 1) * 2); : } : printf("%llu\n" , n); : } : return 0; : } : ------------------------------- : AC : #include<stdio.h> : #include<math.h> : int main(void) : { : unsigned long long int n, k; : while(scanf("%llu\n" , &k) != EOF) : { : n = (pow(2, (k + 1)) - 1) * 2; : if(k >= 10) : { : k = pow(2, (k - 9)); : n = n - ((k - 1) * 2); : } : printf("%llu\n" , n); : } : return 0; : } -- World of bleed1979 http://bleed1979.myweb.hinet.net/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.135.155

05/11 01:09, , 1F
照樣可以0ms 是機器的問題嗎? 還是真的效率有比較好?
05/11 01:09, 1F

05/11 01:10, , 2F
而且pow做完為什麼要+0.5阿?
05/11 01:10, 2F
文章代碼(AID): #1A1dVT-l (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1A1dVT-l (C_and_CPP)