1. 程式人生 > >poj入門水題整理1--按刷題順序解釋

poj入門水題整理1--按刷題順序解釋

1.1000 A+B

就是熟悉平臺的一道題,下面有案例

2.1004 Financial Management

描述:

Larry畢業之後掙錢了想知道他的財務狀況,他現在有他的存款清單,想知道他12個月的結餘有多少

輸入:

12行數字

輸出:

12個月的平均值,精確到分

解法:依次讀入12個月的金額,輸出平均值就好,記得要加一個$

3.3980 取模運算

沒什麼好說的,注意洗poj的答題模式,會給出一個檔案,檔案裡會有很多行,不止case裡給出的這麼少,然後和它的標準輸出對比,如果都一樣,就會AC了。

while((scanf("%d %d",&a,&b)!=EOF)){
這個就是讀取一直到檔案結尾的一種方法,poj裡還會出現其他格式的結尾,題目裡會有描述,注意仔細看題。
4.2521 How much did the businessman lose
描述:商人做生意有虧有賺,如果有個給了假幣,商人會虧損:貨物價格+找錢價格

輸入:N商品價格

            M出售的價格

            P假幣價格

            C找錢的價格

0 0 0 0 代表輸入結束

注意:N<M,P也有可能小於M,因為買東西的不全是假幣

輸出:商人賠了多少錢

如果賺了,就輸出負數。

解法:四個數加加減減= 。=

5.3086 Triangular Sums

描述:三角數T(n)=1+2+...+n.然後給了個例子,是邊長為4的三角形,這個三角形的權重是W(n) = SUM[k = 1…n; k * T(k + 1)]

輸入:N代表有幾個例子,後面跟著N行數值n(1<=n<=300),

輸出:N那行不輸出,其餘的行輸出:

這是輸出的第幾行 n w(n)

解法:按照說明直接暴力計算就可以了,沒什麼大問題

6.1207 The 3n + 1 problem

有個演算法,n為奇數 n=3n+1,n為偶數,n=n/2,得到的值在不斷迴圈這個過程,直到為1則停止。

比如給出22,給出的結果序列就是22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 

22的迴圈長度就是16

輸入:i,j 且0<,j<10000

輸出:i j 和在數字ij之間,最長的迴圈長度

解法:設立max=0,從i開始,計算每個數字的迴圈長度,如果大於max,則重置max,然後輸出i,j,max就可以了

7.1003 Hangover

描述:能用牌伸出桌子多遠呢?最上面的伸出1/2,第二張牌伸出第2張牌的1/3,然後1/4,1/5,最下面的牌長1/(n+1)

輸入:c,是0.01~5.20之間的一個數字,0.00代表結束輸入,c包含3位小數

輸出:需要多少張牌才能達到c這個長度

解法:就是計算1/2+1/3+...+ 1/(n + 1)>=c,這個n最小是多少

           記得輸出 n空格card(s),不要少東西

8.3210 Coins

描述:Snoopy有3個硬幣,他想通過翻轉使這3個硬幣都朝上或朝下,一次只能翻轉一個硬幣,一個硬幣可以被翻轉多次,他最後發現無論開始是怎樣的配置,都可以通過2次翻達到目標,他也發現不能通過少於2次翻轉來達成目標。

Snoopy現在想要知道,有n個硬幣時,最少需要x次翻轉能完成目標,這個x是多少。

注意:是對所有配置都翻轉x次,這個x最小是多少

input:n,n<10000,0表示結束

output:輸出最小的n,如果沒有最小的n,就輸出No Solution!(注意感嘆號)

解法:

1)n為偶數時,奇數面朝上一定要奇數翻轉才可以達成目標,偶數面向上一定要偶數次翻轉才能達成目標,x不可能同時為奇偶,所以x不存在

2)n為奇數時,奇數面朝上全翻到朝下就是偶數面朝下全部翻到朝下等同於偶數面朝上全部翻到朝上。

      全部向上或向下時,需要偶數次翻轉可以達成目標,所以x為偶數

      當有1面朝上時,因為x為偶數,所以一定要翻轉那n-1個才可以達成目標,所以x至少為n-1

      x不可能大於n,此時可以把所有的硬幣都翻一遍,不滿足最少,所以至少為n-1

9.1002 487-3279

描述:有些電話會用字母替代數字方便記憶,以下是一些字母和數字的等價關係

A, B, and C map to 2 
D, E, and F map to 3 
G, H, and I map to 4 
J, K, and L map to 5 
M, N, and O map to 6 
P, R, and S map to 7 
T, U, and V map to 8 
W, X, and Y map to 9 

有時候為了方便記憶,也會採用不標準的格式記憶,如3-10-10-10的標準格式局勢310-1010

現在希望把所有的不標準的電話號碼轉換為標準的格式,同時,希望在電話簿檢查沒有2個公司的號碼一致。

輸入:N代表電話簿的行數,接下來的N行表示電話簿內的電話

輸出:按字母升序輸出重複的電話號碼空格在電話簿內出現的次數

           如果沒有重複,輸出No duplicates. (注意最後的點)

解法:只要將字母轉化為對應的數字,去掉-,在第三位後面加上-就可以了,然後排序,計算重複次數,同時設定flag=0,如果有重複次數,flag位置1,最後如果還是0的話表示沒有重複,輸出No duplicates. 即可

10.1663 Number Steps

描述:按照圖片方式排列的點,想知道在(x,y)是否有寫數字

輸入:N代表N行輸入,接下來N行輸入x,y

輸出:在(x,y)處寫的數字,如果該處沒有數字的話,則寫No Number

解法:自己找找規律就好,其實就是2條直線,計算下公式,看點是否落在上面