發表文章

高中生程式解題系統:TOI2008 2. 大數運算

題目在此 , 此題筆者用Java寫,因為Java有好用的 API BigInteger 阿。 用 Python 時,可以用 eval 函數。 基本上此題是用陣列來處理,此部分可參考 超長整數運算(大數運算) 一文。 程式碼: 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

高中生程式解題系統:日期差幾天

題目連結 http://zerojudge.tw/ShowProblem?problemid=a263 。 這題需要注意閏年的判斷。筆者用一個陣列 daysPerMon[ 13 ] 來紀錄每個月有幾天。 要算出西元 0 年 1 月 1 日 到 西元 y 年 m 月 d 日總過經過多少天數。 算法是先算出從西元 0 年到今年 y 經過多少天,再算出到這個月 m 經過多少天,加上今天的 d 。 於是可以得到  daysCnt(y1, m1, d1) 與  daysCnt(y2, m2, d2)  ,再將這兩個值相減會是要的答案。 程式碼: # include <cstdio> # include <iostream> using namespace std ; int daysPerMon[ 13 ] = { 0 , 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 }; bool isLeapYear ( int year) { return (year % 4 == 0 && year % 100 || year % 400 == 0 ); } int daysCnt ( int year, int month, int day) { int sumOfDays = 0 ; for ( int i = 1 ; i < year; i++) { bool isLeap = isLeapYear(i); if (isLeap) { sumOfDays += 366 ; } else { sumOfDays += 365 ; } } for ( int i = 1 ; i < month; i++) { sumOfDays += daysPerMon[i]; } if (isLeapYear(year) && month > 2 ) sumOfDays++; sumOfDays += day; //cout << "Total Day...

高中生程式解題系統:明明愛數數

題目連結 http://zerojudge.tw/ShowProblem?problemid=a215 。 這題用一個變數 sum 作加總並判斷 sum 是否小於 m。 程式碼: # include <cmath> # include <cstdio> using namespace std ; int main ( void ) { int n,m; while ( scanf ( "%d %d" , &n, &m) != EOF) { int sum = n; int cnt = 1 ; for ( int t = n + 1 ; sum <= m; t++) { cnt ++; sum += t; } printf ( "%d\n" , cnt); } return 0 ; } 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

Android 動畫 (Android Animation Design)

圖片
在 Android 中若要做動畫有幾種方式: 1. 自己寫程式 2. 用 Android 內建的,例如: Drawable Animation 、 Tween Animation 、 Property Animation 等。 此文會以參考資料 [1] 修改成使用 Property Animatin 來說明,在 Eclipse 的 Tween Animation( 下圖 ) 分為 alpha( 透明 ) 、 rotate( 旋轉 ) 、 scale( 縮放 ) 、 set( 集合 ) 、 translate( 平移 ) 等五種。 Alpha 的 XML 如下 : < alpha android:fromAlpha = "0" android:toAlpha = "1" android:duration = "2000" > </ alpha > Rotate 的 XML 如下: < rotate xmlns:android = "http://schemas.android.com/apk/res/android" android:fromDegrees = "0" android:toDegrees = "360" android:pivotX = "50%" android:pivotY = "50%" android:duration = "5000" > </ rotate > Scale 的 XML 如下: < scale android:fromXScale = "0.5" android:toXScale = "3.0" android:fromYScale = "0.5" ...

高中生程式解題系統:彩色蘿蔔

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 題目連結 http://zerojudge.tw/ShowProblem?problemid=a271 。 此題依照題目的條件即可,需要細心與耐心來解題。 程式碼: # include <cstdio> # include <cstring> int main ( void ) { int cnt; char data[ 512 ] = "" ; scanf ( "%d" , &cnt); while (cnt--) { int x, y, z, w, n, m, toxicCnt = 0 ; scanf ( "%d %d %d %d %d %d" , &x, &y, &z, &w, &n, &m); //printf("%d %d %d %d %d %d\n", x, y, z, w, n, m); getchar(); gets(data); int len = strlen (data); //printf("Len:%d %s\n", len, data); for ( int i = 0 ; i < len; i++) { //printf("toxicCnt = %d\n", toxicCnt); if ( data[i] == ' ' ) continue ; m = m - n * toxicCnt; //printf("m = %d\n", m); if (m <= 0 ) { printf ( "bye~Rabbit\n" ); break ; } switch (data[i]) { case '1' : m += x; break ; case '2' : ...

C++教學大綱 (C++ Courses Outlines)

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 C++教學 在研究所時,做的教學大綱,放在此留戀。 ======================================================= 時間: 9/15( 一 ), 9/16( 二 ), 9/22( 一 ), 9/23( 二 ), 9/29( 一 ), 9/30( 二 ), 10/6( 一 ), 10/7( 二 ) 晚上七點至十點   (19:00 ~ 22:00) ,共四周八天。 地點:綜三館   601 IC 設計實驗室 主講人:資工碩一   廖柄㷍 授課內容 Day One ( 9/15, 9/16 ) : Object-Based Programming Part I ( 以物件為基礎的程式設計 ) Class Definition ( 類別定義 ) Class Objects ( 類別物件 ) Class Members ( 類別成員 ) Overloaded Functions ( 多載化函式 ) Function Templates ( 函式範本 ) Day Two ( 9/22, 9/23 ) : Object-Oriented Programming Object-Based Programming Part II ( 以物件為基礎的程式設計 ) *this pointer (this  指標 ) Static Class Members ( 靜態類別成員 ) Constructor & Destructor ( 建構子與解構子 ) Overloaded Operators ( 運算子重載 ) Class Templates ( 類別樣板 ) Day Three ( 9/29, 9/30 ) : Object-Oriented Programming Part I( 物件導向程式設計 ) Inheritance ( 繼承 ) Polymorphism ( 多型 ) Day Four ( 10/6, 10/7 ) : Object-Oriented Programming P...

高中生程式解題系統:解方程

圖片
題目連結 http://zerojudge.tw/ShowProblem?problemid=a410 。 用 Cramer's Rule 來解,若有一聯立方程式如下(下圖取自 Cramer's Rule ): 則x與y的解為(下圖取自 Cramer's Rule ): 程式碼: # include <cstdio> using namespace std ; int main () { float a,b,c,d,e,f; while ( scanf ( "%f%f%f%f%f%f" ,&a,&b,&c,&d,&e,&f) != EOF ){ float det = a*e - b * d; float detX = c * e - b * f; float detY = a * f - c * d; if (det == 0 && detX == 0 ) printf ( "Too many\n" ); else if ( det == 0 ) printf ( "No answer\n" ); else { printf ( "x=%.2f\n" ,detX / det); printf ( "y=%.2f\n" ,detY / det); } } return 0 ; } 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。