2014年1月16日 星期四
2013年12月4日 星期三
c048: Ant on a Chessboard、UVA 10161
(defun calc-coor (sec) "計算座標函式" (if (equal sec 0) (return-from calc-coor)) ;; 把方格從0秒開始計算 ;; 再以斜線上的點作為基準(base) ;; 最後計算 基準+位移 即為所求 (let* (( sec (- sec 1)) (layer (+ (floor (sqrt sec)) 1)) (base (* layer (- layer 1))) (displace (- sec base)) (coor (list layer layer))) (if (equal (rem layer 2) 1) (if (> displace 0) (decf (first coor) displace) (incf (second coor) displace)) (if (> displace 0) (decf (second coor) displace) (incf (first coor) displace))) coor )) (defun chess-board () (do ((sec (read) (read))) ((<= sec 0) ) (format t "~A~%" (calc-coor sec)))) (chess-board)
#include <stdio.h> #include <math.h> int main(int argc, char *argv[]) { int N ; int layer ; int base ; int displace ; int coor[2] ; while(scanf("%d",&N) && N){ N-- ; layer = floor(sqrt(N))+1; base = layer*(layer-1) ; displace = N-base ; coor[0] = coor[1] = layer ; if(layer%2 == 1) if(displace > 0) coor[0] -= displace ; else coor[1] += displace ; else if(displace > 0) coor[1] -= displace ; else coor[0] += displace ; printf("%d %d\n", coor[0], coor[1]) ; } return 0; }
題目連結:http://zerojudge.tw/ShowProblem?problemid=c048
2013年12月2日 星期一
c045: Rotating Sentences、UVA 490
#include <stdio.h> #include <string.h> #define MAX 101 char arr[MAX][MAX] ; int main(int argc, char *argv[]) { memset(arr, '\0', sizeof(arr) ) ; int i, j ; int rows = 0; int cols = 0 ; for (i=0; fgets(arr[i], sizeof(arr[i]), stdin) != NULL ; ++i) rows++ ; char *pos ; for (i=0 ; arr[i][0]!='\0'; ++i) { if ((pos=strchr(arr[i], '\n')) != NULL) *pos = '\0'; if (strlen(arr[i]) > cols) cols = strlen(arr[i]) ; } /* 字串由左下開始輸出,先向上輸出,再向右輸出 */ for (i=0; i<cols; ++i) { for (j=rows-1; j>=0 ; --j) printf("%c",(arr[j][i]=='\0'?' ':arr[j][i])) ; puts("") ; } return 0; }
(defparameter arr (make-array '(100) :initial-element nil)) (defparameter rows 0) (defparameter cols 0) (defun read-lines () "read lines until eof" (do ((i 0 (incf i) ) (line (read-line *standard-input* nil 'eof) (read-line *standard-input* nil 'eof))) ((eql line 'eof) i) (setf (aref arr i) line))) (defun max-len-str() (let (( max -1 )) (do ((i 0 (incf i))) ((>= i rows) max) (if ( > (length (aref arr i)) max ) (setf max (length (aref arr i))))))) (defun printf() (do ((i 0 (incf i)) ) ((>= i cols)) (do ((j (- rows 1) (decf j))) ((< j 0)) (if (> (length (aref arr j)) i) (princ (aref (aref arr j) i)) (princ " ") )) (princ #\Newline))) (defun rotate-string() (setf rows (read-lines)) (setf cols (max-len-str)) (printf)) (rotate-string)
題目連結:http://zerojudge.tw/ShowProblem?problemid=c045
2013年11月30日 星期六
Balance partion problem
(defun balpart (lst) "balace partion problem " (let* ((sum (apply #'+ lst)) (halfsum (floor (/ sum 2)) ) (sol (make-list (+ halfsum 1) :initial-element nil )) ) (setf (first sol ) t ) (dolist (i lst ) (do ((j halfsum (decf j))) ((< j i)) (if (nth (- j i) sol) (setf (nth j sol) t)))) (let ( (halfcloser (do ((i halfsum (decf i) )) ((nth i sol) i ) ))) (return-from balpart (- sum halfcloser halfcloser))) )) (format t "Please input a number list: ~%") (finish-output t ) (format t "The minimum difference is : ~A~%" (balpart (read) ) )![]()
詳細過程請參考此連結
2013年11月27日 星期三
ctex simsun.ttc not found 解決方法
網路上下載simsun.ttc後, 尋找你的texmf-local資料夾 將simsun.ttc放入texmf-local/fonts/truetype/simsun.ttc(沒有的資料夾自己建) 最後執行texhash(sudo texhash)
2013年11月16日 星期六
訂閱:
文章 (Atom)
