2015年9月30日 星期三

Uva 10371 Time Zones

題目來源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=15&page=show_problem&problem=1312


題意:

題目開頭先給你時區的簡稱,Input :time  時區1  時區2

Output:將在時區1的time 換算成在時區2的time 並輸出


胡言亂語:

這題,卡在12小時制時間的換算超久QAQ

而函式的用法和#uva 860差不多XD

可以點進去看就好,先附上debug兩天...的程式碼~~~

...最後竟然是我把720打成780....


Uva 860 Entropy Text Analyzer

題目來源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=10&page=show_problem&problem=801

題意:

這題在luckycat沒有翻譯..有點難過,畢竟英文真的沒有很好。

first,他會先輸入一篇文章,你要按照公式,分別輸出他的單字總數、ET、Erel。

胡言亂語:

//記得當時我問同學題意時,它們都說:你帶公式就好啦,但我就是不懂公式的意思咩=3=

作法講起來真的蠻簡單的

首先你要會將句子中的單字擷取出來,所以會用到strtok( )這個函式,他的用法是:





這樣就可以將單字取出來了!

//但要注意str1是 char[]喔~是cstring (char string)才可以使用=)

//比較兩個cstring是否相同可以使用strcmp(str1,str2),相同回傳0,不同回傳非零數字~

取出來後就可以順便計算其出現頻率。因此就用到map了!

剛認識map時,覺得他的感覺很像hash(雜湊),你的key會對應到一個抽屜,你可以在抽屜內放數字進去。因此在這邊,我們把剛剛取出的單字p當成key,把它出現頻率放到對應的抽屜裡:


最後再將答案計算並輸出就好 ^_____^

//n表示有幾種單字,爛瘩表示總共有幾個單字。

程式碼:





2015年9月23日 星期三

UVa10221 Satellites

題目來源:https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=1162

胡言亂語:

找弧長和弦長的公式找好久喔 ... 再次要在code book加上新東西了XD

這題我犯的錯誤是,忘記輸出小數點後6位,輸出小數的話用printf 比較好寫

double x;
printf("%.nlf",x);

這樣就可以輸出小數點後n位了。=)

程式碼:





Uva 478 Points in Figures: Rectangles, Circles, Triangles

題目來源:https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=419

胡言亂語:

這題原本我亂看題目,所以有重寫一次...

題目要求輸出一圖形順序,我以為先輸出完矩形、在圓形、在三角形...

因此思考了一下,要怎麼樣存圖形比較方便。分別設三個array存不一樣的圖形是笨方法。最後:

struct Point{
    double x,y;
};

struct graph{
    char ch;  //判斷是什麼圖形
    Point a,b,c;
    double radius;
}P[11];

多設的變數可以不用理他,像是圓形就只需用到Point a,b,c根本用不到,但沒關係

這樣只要從P[1]~P[i]比較是否在圖形內就好

程式碼:






Uva 191 Intersection

題目來源:https://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=127

胡言亂語:

剛看到這一題的時候,就想說,可能先要判斷線段和矩形的四個邊有沒有交點,在來判斷線段是否在矩形內,但想一想,會不會更簡單啊??

突然想到,那把線段切成很多小點,判斷每個點是否在矩形內不就好了?

線段方程式:ax+by = c  ==>千萬不要用這個,因為這樣就會有三個變數
                        y  = ax+b  ==>這樣只剩兩個變數而已

因此我已x為變化基準,計算x' = x+0.5為間距的點是否在矩形內,但這樣WA了。
測了一下,發現兩個錯誤

(1)  若為垂直線則無斜率,需要另外處理
(2)  x' = x+0.1  之前間距(0.5)太大,會有漏掉的點

修改後終於AC了  ^___^

程式碼:



2015年7月28日 星期二

ITSA 桂冠賽 [Problem B4-易] Polynomials

題目來源 : http://140.116.249.152/e-Tutor/mod/programming/view.php?a=11958


[Problem B4-易] Polynomials

成績: 0 / 倒扣: 0.8
Time Limit: 1 second
Problem Description
● English
Given a product (ax2 + bx + c)d, write a program to compute the coefficients of the resulting polynomial. For example, if (abcd) = (1, 2, 3, 2), we have (x2 + 2x + 3)2 = x4 + 4x3 + 10x2 + 12x + 9 and your program outputs the coefficients 1, 4, 10, 12 and 9. In this problem, abcd are all integers and d is at most three.
● Chinese
給定一個多項式乘積形式如下 : (ax2 + bx + c)d ,本題的工作是要算出多項式乘積展開後的各項係數。例如,給定 (abcd) = (1, 2, 3, 2) ,則 (x2 + 2x + 3)2 = 4+ 4x3 + 10x2 + 12x + 9 ,你的程式需要輸出係數 1, 4, 10, 12 和 9 。 在這個問題裏 , 每個所給的數字皆為整數 ,而且 不會超過 3 。
Technical Specification
● English
  • All the given numbers are integers.
  • The range of each number is as follows:
  • -100 ≤ a ≤ 100 and a ≠ 0
  • -100 ≤ b ≤ 100
  • -100 ≤ c ≤ 100
  • 1 ≤ d ≤ 3
● Chinese
  • 每個所給的數字皆為整數
  • 每個數的限制範圍如下 :
  • -100 ≤ a ≤ 100 且 ≠ 0
  • -100 ≤ b ≤ 100
  • -100 ≤ c ≤ 100
  • 1 ≤ d ≤ 3
Input Format
● English
The first line is an integer which indicates the number of test cases. Each test case consists of four integers abcd, separated by spaces, in a line.
● Chinese
第一行是一個整數代表測試資料有幾筆。每一筆測試資料都用一行四個整數 bcd 來表示,整數之間以一個以上的空格分開。
Output Format
● English
For each test case, output the coefficients of (ax2 + bx + c)d in a line by the descending power of x , separated by spaces.
● Chinese
針對每一筆測試資料,依降冪順序輸出多項式的係數。兩筆資料之間以一個斷行隔開,兩係數之間以一個空格隔開。
Example

    Sample Input:Sample Output:
    4
    1 2 3 2
    1 10 100 1
    10 0 10 3
    20 0 -1 2
    1 4 10 12 9
    1 10 100
    1000 0 3000 0 3000 0 1000
    400 0 -40 0 1

解法 : 想不到更簡單的方法~"~,因為題目表示d不超過3 ,所以我就用的暴力法....分開解
如果d==1則直接輸出,d==2則係數相乘一次,d==3則再乘一次