[問題] 高中生程式解題系統a032

看板C_and_CPP作者 (所有狗類的主人)時間14年前 (2011/04/10 02:34), 編輯推噓10(10066)
留言76則, 16人參與, 最新討論串1/1
作那邊的題目有幾個問題想請教大家。 a032 的題目是輸入整數 n,輸出 n! 的值,但結果不大於 2^63。 (為啥要要求不大於 2^63?) 我的程式是寫這樣: #include <iostream> #include <math.h> using namespace std; int main(){ int n,i; while(cin>>n){ if(n==0||n==1){ cout<<1<<endl; } else{ int j=1; for(i=2;i<=n;i++){ j*=i; } cout<<j<<endl; } } return 0; } 自己電腦測試是都OK,不過送出去是 WA...... 「與正確輸出不相符(line:14) 您的答案為: 1932053504 正確答案為: 6227020800」 本以為是 int j 搞鬼,但是換成 long j、float j、double j,結果還是 WA? 哪裡有錯呢? 然後它說 "必須在程式中放入一個 while 迴圈來讀取所有的測試資料", 我不懂這是甚麼意思,@@? (我目前只會用 for, if, else) 我是照 a001 依樣畫葫蘆的。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.229.246.181

04/10 10:39, , 1F
unsign long long int~
04/10 10:39, 1F

04/10 10:41, , 2F
別問程式為你做了什麼, 先問你對程式做了什麼...
04/10 10:41, 2F

04/10 10:41, , 3F
程式: 我病得好嚴重阿~~ 你還要我做事
04/10 10:41, 3F

04/10 10:43, , 4F
AC了,@@。long long int 我書上沒這個東西說......
04/10 10:43, 4F

04/10 10:44, , 5F
1F 不是unsigned long long int 嗎?
04/10 10:44, 5F

04/10 10:44, , 6F
AC 然後你就繼續寫下一題了...真害, 雖然成就感有了,
04/10 10:44, 6F

04/10 10:44, , 7F
請問 AC 後面的 (4ms,708kb) 是啥意思,@@?
04/10 10:44, 7F

04/10 10:44, , 8F
但老實說你程式能力並沒進步
04/10 10:44, 8F

04/10 10:45, , 9F
我是打算用作數學的方式,狂作題目,不會再看書找或問
04/10 10:45, 9F

04/10 10:47, , 10F
所以你是先學會寫作文才練ㄅㄆㄇ?
04/10 10:47, 10F

04/10 10:50, , 11F
也不是說不行...但就好像老外學中文, 腔永遠不對, 詞
04/10 10:50, 11F

04/10 10:50, , 12F
永遠都用不好
04/10 10:50, 12F

04/10 10:52, , 13F
結果不大於 2^63 是題目給你的保證
04/10 10:52, 13F

04/10 10:53, , 14F
2的冪次方一出現表示和數值的極限有關, 這個東西在你
04/10 10:53, 14F

04/10 10:54, , 15F
學會 if 之前就該會的東西, 教科書通常會擺在最前面
04/10 10:54, 15F

04/10 10:55, , 16F
不是你跳太快, 就是書選得不好
04/10 10:55, 16F

04/10 10:57, , 17F
我覺得「排版」應該要放在所有教科書的第一章...
04/10 10:57, 17F

04/10 11:13, , 18F
程式, 是細心的邏輯架構出來的成品. 每一行指令都徹底了
04/10 11:13, 18F

04/10 11:14, , 19F
解之後, 就省掉『狂』作題目之舉了.
04/10 11:14, 19F

04/10 11:15, , 20F
狂, 比較像是以一擋千的衝鋒陷陣. 但程式之妙,在於部陣.
04/10 11:15, 20F

04/10 11:16, , 21F
不過, 高中生嘛, 懂多少算多少. 我大學畢業也沒懂多少.
04/10 11:16, 21F

04/10 11:23, , 22F
對不起我看不懂前面那個 int j是哪招
04/10 11:23, 22F

04/10 11:24, , 23F
int j=1
04/10 11:24, 23F

04/10 11:25, , 24F
我不是說你錯,因為我不會寫程式,單純想問而已
04/10 11:25, 24F

04/10 11:25, , 25F
j是放最後答案的地方, 初始值給1之後, 才能夠連乘下去.
04/10 11:25, 25F

04/10 12:40, , 26F
推第一章應該先教排版 真的很重要
04/10 12:40, 26F

04/10 13:41, , 27F
到底是誰說初學程式應該要一直做題目的...XD
04/10 13:41, 27F

04/10 13:56, , 28F
要練成反射動作吧 (誤)
04/10 13:56, 28F

04/10 14:18, , 29F
邏輯和基礎,應該還是後者優先吧...
04/10 14:18, 29F

04/10 14:32, , 30F
我發現我是造成錯誤的推手...XD
04/10 14:32, 30F

04/10 14:34, , 31F
排版是很重要的 當要請你隊友幫忙DEBUG時...
04/10 14:34, 31F

04/10 14:35, , 32F
噁心的排版會讓你隊友很火~~~
04/10 14:35, 32F

04/10 15:27, , 33F
排版排版,排版不良的程式沒必要看~~
04/10 15:27, 33F

04/10 17:29, , 34F
x1, x2, x3 流水號命名, t, u, v, x 無所不包型
04/10 17:29, 34F

04/10 17:30, , 35F
或是過短型 e(錯誤), c(計數), s(總和) 的命名都應該
04/10 17:30, 35F

04/10 17:31, , 36F
避免, 因為這顯示了你沒有花心思在編程上面, 直接把特
04/10 17:31, 36F

04/10 17:32, , 37F
定領域的習慣給帶進來(數學上用流水號標示集合內元素)
04/10 17:32, 37F

04/10 17:33, , 38F
但是該作法是為了縮減版面及方便使然, 建構軟體講求的
04/10 17:33, 38F

04/10 17:34, , 39F
是精確, 在IDE跟硬體支援下, 你要做的就是儘量把商業
04/10 17:34, 39F

04/10 17:34, , 40F
邏輯寫進去
04/10 17:34, 40F

04/10 17:41, , 41F
阿還有重複型 a, aa, aaa, aaaa
04/10 17:41, 41F

04/10 19:10, , 42F
這很簡單啊,用遞迴就搞定了
04/10 19:10, 42F

04/10 19:50, , 43F
其實在競賽時 誰會管那麼多 只要能夠理解看懂比較重要
04/10 19:50, 43F

04/10 19:51, , 44F
講求速度的原因 簡潔的表達都是很重要的
04/10 19:51, 44F

04/10 20:10, , 45F
那我也不知道這種人出去比賽有什麼用了, 英打明明不
04/10 20:10, 45F

04/10 20:10, , 46F
難練
04/10 20:10, 46F

04/10 20:21, , 47F
其實我s都是代表陣列 i,j都用在迴圈
04/10 20:21, 47F

04/10 20:22, , 48F
u,v是代表圖的結點 e是邊
04/10 20:22, 48F

04/10 20:22, , 49F
陣列也有用途, 像是裝硬幣 coins, 裝卡片 cards
04/10 20:22, 49F

04/10 20:24, , 50F
u,v 也可以代表紫外線, 然後 e代表電子
04/10 20:24, 50F

04/10 20:24, , 51F
陣列名稱也有用dp代表的
04/10 20:24, 51F

04/10 20:24, , 52F
你知道, 別人不一定知道, 你以為慣用, 但在非理工科系
04/10 20:24, 52F

04/10 20:25, , 53F
紫外線是哪招啊
04/10 20:25, 53F

04/10 20:25, , 54F
的人眼裡這根本不代表什麼
04/10 20:25, 54F

04/10 20:26, , 55F
因為使用 dp 而把陣列叫 dp, 你真的有把握知道你的陣
04/10 20:26, 55F

04/10 20:27, , 56F
列裝的東西叫什麼東西嗎? typedef 來抽象化試試
04/10 20:27, 56F

04/10 20:29, , 57F
恩恩 我會試試抽象化
04/10 20:29, 57F

04/10 20:31, , 58F
反正是陣列
04/10 20:31, 58F

04/10 20:40, , 59F
看你對待它是一塊記憶體, 還是一棟大樓的柱子, 寫出來
04/10 20:40, 59F

04/10 20:40, , 60F
即使是一個變數, 感覺也會很不一樣
04/10 20:40, 60F

04/10 23:40, , 61F
這又扯到Refactoring的領域吧
04/10 23:40, 61F

04/11 06:32, , 62F
就算是競賽 我也要求隊友 ijk滾開 命名題目都會給n,m是啥
04/11 06:32, 62F

04/11 06:33, , 63F
照題目說的去命 這樣講完題目再看程式就一目瞭然
04/11 06:33, 63F

04/11 06:34, , 64F
dp命名是允許的 dp題型我們只驗證遞迴式... LOC少超過30
04/11 06:34, 64F

04/11 06:36, , 65F
然後必須要講一點 變數命名重要是因為readable >> 可寫性
04/11 06:36, 65F

04/11 06:37, , 66F
有水準的隊伍 前三題彼此間是不干涉的 這邊有WA 那就掰了
04/11 06:37, 66F

04/11 06:37, , 67F
所以競賽code被看的次數的確不多 所以變數命名就不太苛求
04/11 06:37, 67F

04/11 06:39, , 68F
不過練習題目則不然 因此這篇文的作者 還是請做好基本功~
04/11 06:39, 68F

04/11 07:39, , 69F
其實firejox本人的code... 很可怕(抖) @_@
04/11 07:39, 69F

04/11 07:39, , 70F
<-- 我是他同校隊的學長:P
04/11 07:39, 70F

04/11 07:45, , 71F
可怕是怎麼個可怕法? (好奇 XDD)
04/11 07:45, 71F

04/11 11:26, , 72F
#1DVEWS1W 他習慣}大括號前多一個teb =..=
04/11 11:26, 72F

04/11 11:27, , 73F
小程式還好,兩三百行以上時很容易混淆block
04/11 11:27, 73F

04/11 11:27, , 74F
而且他很喜歡用bitwise 運算子 //這部份他超有研究的!
04/11 11:27, 74F

04/11 14:34, , 75F
bitwise對常數時間剪很大 像10k^2的運算 常數就是TL的關鍵
04/11 14:34, 75F

04/11 22:57, , 76F
要看我的code請用樹狀圖 比較可以看的懂XD
04/11 22:57, 76F
文章代碼(AID): #1DeHSouK (C_and_CPP)