發表文章

The Disappearing Spoon — Book Report

The title of this book, "The Disappearing Spoon," is a well-known magic trick that I love. The magician uses a teaspoon made of gallium, a metalloid with a low melting point, to astonish the crowds. The gallium spoon will transform into shiny liquid and sink into the hot water if the water temperature is higher than the spoon's melting point. The debunking of this trick attracts lots of readers, including myself. Here is one of the videos on YouTube which performs this trick. The book is composed of historical stories that introduce most of the elements of the periodic table, combining history, chemistry, and even physics. It tells readers that chemistry is a part of everyone's daily life. One of my favorite stories is about a red industrial dye that saved the life of a scientist's daughter. The story took place in the winter of 1935. The daughter tripped down the stairs, and a needle wounded her. She developed a serious streptococcal infection that led to high

Iridescence網誌目錄

有鑑於我網誌上的文章越來越多,我決定開始整理一個目錄,方便找尋。 【自主學習】 108上學期自主學習詳細計畫表:學習有機化學 108下學期自主學習詳細計畫表:自然科學專題研究 【心路歷程】 雄科班沒考上的準備歷程 【科普】 Sydney科學小教室(1):電是什麼呀? Sydney科學小教室(2):為什麼電漿會發光?探究微觀的世界 Sydney地科小教室(1):雲與雨,認識低雲族 【專案】 00後女子名字產生器 【程式解題】 APCS - 2016/3/5 第三題:線段覆蓋長度 C解法 APCS - 2016/10/29 第一題:三角形判別 C解法 APCS - 2017/3/4 第一題:秘密差 C解法 2019年4月TOI練習賽新手組 - 滿意度調查 (Survey of Satisfaction) C解法(註解版) 2019年5月TOI練習賽新手組 - 第2題 座位安排(Seats) C解法 2019年11月TOI練習賽新手組 - 多項式計算 (Polynomial) C解法 ZeroJudge - a015矩陣的翻轉 C解法(詳細解說) ZeroJudge a038數字翻轉 C解法 ZeroJudge a215明明愛數數 C解法 ZeroJudge a216數數愛明明 C解法 ZeroJudge d086態度之重要的證明 C解法

【程式解題】ZeroJudge d086態度之重要的證明 C解法

算是一個我覺得很好笑的題目啦。 code打起來很方便但是執行起來並不是(參雜檢驗的部分)的版本。 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ int i,j; char input[200]=" "; int score[200]={0}; int sum; while(scanf("%s",input)!=EOF){ if(input[0]=='0'&&strlen(input)==1) return 0 ; sum=0; for(i=0;i<strlen(input);++i){//小寫轉大寫  if(input[i]>=97) input[i]-=32; // printf("%c",input[i]); } for(i=0;i<strlen(input);++i){ if(input[i]<65||input[i]>90){//參雜檢驗  printf("Fail\n"); break; } score[i]=input[i]-64; sum+=score[i]; if(i==strlen(input)-1) printf("%d\n",sum); } } return 0; }

【心路歷程】雄科班沒考上的準備歷程

  這篇文章,在開始密集準備考試的時候就想寫,畢竟當時看了不少神人的心路歷程,覺得不管最終是否考上,這都會是我很棒的經驗,畢竟我是第一次有自己的、明確的目標。 然而,我卻拖了三年,這三年來我成長了不少,經歷一番風雨(改天再說),更是覺得我應該寫這篇文章。 為什麼決定考雄科班? 心態轉變 國二的時候,耳聞此事,只是覺得我到時候一定要去考試,只是想測試自己的能力。到了國三,有天,藉由我莫名被流出的個資,我收到知名大補習班的廣告,看到報名雄科培訓專班送高一上全科,還滿划算的,於是就這麼報名,並且開始準備。(呵呵) 準備過程 我國中是個偽文青,小小的叛亂分子。喜歡科學認真上課但理化、數學始終成績相較於英文算是普普。我不知道我有沒有天份,但我知道這個過程的確開啟了我對科學的熱愛。 數學 我當時寫數學題的時候跟一般人不太一樣。比如解題過程原因簡寫(「由算幾不等式可知」,抱歉我現在想不到任何國中的數學定理)就好,我會在老師出的作業講義上每題都證明一次算幾不等式,所以我很常常寫不完。我很清楚他人不是這樣讀書,但我認為要理解數學背後的原因而不是一昧的背下公式。(這當然存在思考謬誤,不用這個方法也可以理解,只要願意思考) 這個方法到了高中,或者我後來先修,當然行不通。因為題目不再只是基本觀念,思考量更大。於是我在國中後期讀了《觀念數學:如何學好高中數學》,修正了我學習數學與解題的方向。 「成績:低於T50」,當時補習班數學課真的是鴨子聽雷,真正懂了反而是考完雄科後。 物理 我的物理擅長的也和其他同學不同。我擅長電學、熱學,運動學則不。別人等加速度的三個公式,我國中時只記一個(現在三個都記起來了啦),需要其他的再推演就好。所以我解題速度很慢,很慢。 「成績:約T50」,補習課加強了我的強項,弱項我考試時還是不懂。 化學 我國中時覺得化學比物理難百倍,物化(像反應速率)我卻能拿高分。我始終不懂氧化還原和酸鹼反應,直到閱讀蘇卡奇著的《觀念化學》套書,這系列我反覆讀,直到考完試都沒有停歇。(很幸運閱讀了上岸學姊劉瑄的文章,獲得了這個建議)總算是搞懂了不懂的。 「成績:高於T50」,當時只是我的化學啟蒙。補習課沒有教有機,我當時自修也沒有感受到有機的魅力。喔,有機沒有考,但有機很迷人。 生物 我當時喜歡園藝,每天都在照顧陽台上的植栽,學習除蟲,國一生物也學得不

【科普】Syd地科小教室(1):雲與雨,認識低雲族

圖片
雨:天上的雲為甚麼有時候多,有時候少呢? Syd:雨,你知道雲是甚麼嗎? 雨:雲,雲是甚麼? Syd:雲會做甚麼事呢? 雨:嗯,雲……會下雨。 Syd:對。你就是這樣來的。雲是由高空中的水氣和冰晶等組成的。 雨:哇。那所以天上的水氣、冰晶也有時候多,有時候少嗎?這些東西不在天上會在哪裡? Syd:嗯,像下雨的時候,就是因為水氣、冰晶累積太多了,所以變得很重,就往地面掉了。 雨:哇。那如果一直下雨,一直有我被製造出來,天上不就沒有雲了嗎? Syd:並不會一直下雨喔!因為雨下到一定的程度,太重的雲被下完了減肥了,就不會再下了。而且天上的水也會有累積的方法。像是天氣熱的時候,地面水體比如說湖泊、海洋會蒸發水分到天空中, 這樣降水、蒸發的動態過程就是所謂水循環的過程 。 雨:哇,原來如此。那天上的雲為甚麼有不同的大小形狀呢? Syd:大小的話,雨你想想,當我離你近一點,是不是看起來就比較大隻?離你遠一點是不是就看起來變小了?雲也是這樣子的。你看到比較大的雲,就是離我們地面比較近的雲。 雨:這樣呀。那形狀呢? Syd:形狀,影響雲的形狀生成的因素太多了,畢竟天上不是靜態的。可能有像是風的影響。我們要不要來認一下雲? 雨:好啊! 圖(一) 積雲 Cumulus (圖片來源:Pixabay) Sydney:我們先從離我們近的,比較大的開始。像是這個, 一朵一朵很大朵 的就是 積雲 。 雨:嗯。那這張也是積雲囉! 圖(二) 層積雲 Stratocumulus (圖片來源:Pixabay) Syd:你為什麼認為他是積雲呢? 雨:因為它也是一朵一朵很大朵的啊! Syd:嗯,但是雨,你有沒有發現它朵跟朵之間是連在一起的呢? 雨:對耶。所以它不是積雲嗎? Syd:它很像積雲,但是這種 像是大朵積雲連在一起綿延不絕 (好長的形容)就是 層積雲 喔! 雨:噢。是這樣呀! Syd:雨,你看看這張圖。 圖(三) 層雲 Stratus (圖片來源:尤柏澂 提供) 雨:這也是雲嗎?好霧,這該不會是空汙吧? Sydney:這是雲。它叫做 層雲 ,特點就是 如霧一般,不容易看出它所謂的形狀 。 雨:真的嗎?原來這不是空氣汙染。 Sydney:當然霧霧的也有可能是空氣汙染,不一定呢。 本篇介紹專有名詞: 水循環 、 積雲(Cu) 、 層積雲(Sc) 、 層雲(St) 。

【程式解題】ZeroJudge a215明明愛數數 C++解法(逐行註解)

C解法請點此 #include <iostream> using namespace std; int main(){ int i; //loop int n; //從 n 開始數   int m; //總和會超過 m int sum; //總和 int count; //數了幾個數字 while(cin>>n>>m){ sum=0; //總和歸零 for(i=0;i<1000000000;++i){ sum+=n+i;                               //從n開始數,數一個就加到sum裡 if(sum>m){ //如果sum>m count=i+1; //記錄數了幾個 break; //跳出迴圈 } } cout << count << "\n"; //輸出 } return 0; }

【程式解題】2019年11月TOI練習賽新手組 - 多項式計算 (Polynomial) C解法

題目請點此 程式碼: #include <stdio.h> #include <stdlib.h> int main(){ int i,j,x=0; int n1,n2; long tmp; long poly1[2][1001]={0}; long poly2[2][1001]={0}; long sum[2][1001]={0}; scanf("%d",&n1); for(i=0;i<n1;++i){ scanf("%ld",&poly1[0][i]); scanf("%ld",&poly1[1][i]); } scanf("%d",&n2); for(i=0;i<n2;++i){ scanf("%ld",&poly2[0][i]); scanf("%ld",&poly2[1][i]); } for(i=0;i<=1000;++i){ sum[0][i]=i; } for(i=0;i<=1000;++i){ for(j=0;j<n1;++j){ if(poly1[0][j]==sum[0][i]){ sum[1][i]+=poly1[1][j]; break; } } for(j=0;j<n2;++j){ if(poly2[0][j]==sum[0][i]){ sum[1][i]+=poly2[1][j]; break; } } } for(i=1000;i>=0;--i){ if(sum[1][i]){ printf("%ld:",sum[0][i]); printf("%ld\n",sum[1][i]); }else{ ++x; } } if(x==1001) printf("NULL!"); system(

【程式解題】2019年4月TOI練習賽新手組 - 滿意度調查 (Survey of Satisfaction) C解法(註解版)

題目請點此 程式碼: #include <stdio.h> #include <stdlib.h> #define SWAP(x,y,t)(t=x,x=y,y=t) int main(){ int i,j; //loop long tmp; //用在排序的SWAP long long  n; //input long survey[2][10]={0}; //各滿意度分數儲存 scanf("%lld",&n); for(i=0;i<10;++i){ survey[0][i]=i; //把分數存進survey[0][i] } while(n){ switch(n%10){ //把各分數的個數存進陣列survey[1][] case 0: ++survey[1][0]; break; case 1: ++survey[1][1]; break; case 2: ++survey[1][2]; break; case 3: ++survey[1][3]; break; case 4: ++survey[1][4]; break; case 5: ++survey[1][5]; break; case 6: ++survey[1][6]; break; case 7: ++survey[1][7]; break; case 8: ++survey[1][8]; break; case 9: ++survey[1][9]; break; } n/=10; }         //bubble sort,由個數少到多 for(i=9;i>=1;--i){      for(j=1;j<=i;++j){ if(survey[1][j-1]>survey[1][j]){ SWAP(survey[0][j-1],survey[0][j],tmp);

【程式解題】2019年5月TOI練習賽新手組 - 第2題 座位安排(Seats) C解法

  題目請點此

【程式解題】ZeroJudge - a015矩陣的翻轉 C解法(詳細解說)

解法推導: 例如說有個矩陣A:(括弧太小就不打了) 1 2 3  4 5 6 翻轉後會變這樣: 1 4 2 5 3 6 也就是說原本是這樣儲存的: M[0][0]=1,M[0][1]=2,M[0][2]=3 M[1][0]=4, M[1][1]=5, M[1][2]=6 輸出的順序是: M[0][0]→ M[1][0] → M[0][1] → M[1][1] → M[0][2] → M[1][2]。 很容易就看的出來,其實就是以下程式碼裡把i、j交換的做法。記得for迴圈條件式也要改。 程式碼: #include <stdio.h> #include <stdlib.h> int main(){ int i,j; //loop int r,c; //row, column int M[100][100]={0}; //input matrix while(scanf("%d%d",&r,&c)!=-1){ //輸入直到EOF for(i=0;i<r;++i){ for(j=0;j<c;++j){ scanf("%d ",&M[i][j]); //input } } for(i=0;i<c;++i){ for(j=0;j<r;++j){ printf("%d ",M[j][i]); //output } printf("\n"); } }      return 0; }