问某个日期后N天是几月几号星期几,我脑子里已经模拟的思路了。。但是懒得写,就用想python里面是否有现成的函数,没想到还真找到了。
代码十分简单,易读,唉,好方便,要是比赛中能用多好。。
#!/usr/bin/python import time,datetime import sys week = ["Sunday", "Monday", "Tuesday", "Wednesday",\ "Thursday", "Friday","Saturday","Sunday",] for line in sys.stdin: line.split() line = int(line) if line == -1: break t = datetime.date(2000,1,1)+datetime.timedelta(line) print t,week[ (6+line)%7 ]
这两天看了看perl,就把A+B搞掉了,还是看了看了好多后才看的。。
用来读入标准输入一行,当读到文件结尾的时候会返回undef值。
split的功能和python是一样的,用分割符分开,这里的是/\s+/,用正则表达式表示一个或N个连续空白字符。
输出时候是标量内插,我一般喜欢把花括号加上。。
#!/usr/bin/perl -w while( defined( $line = <STDIN> ) ){ @num = split /\s+/,$line; $sum = $num[0] + $num[1]; print "${sum}\n"; }
ZOJ 2508 A Less Simple Task in Windows
这个题是个简单的模拟题,窗口点击,点击到窗口就弄到第一个,分为单击和双击,标题蓝和内容栏,用class搞感觉十分方便。~
#include<iostream> #include<vector> #include<algorithm> #include<string> #include<cstdio> #include<cstring> using namespace std; int N,H,M,wmax,hmax; class win{ public: int x1,x2; int y1,y2; int index; bool ismax; void getdata( int t ){ scanf("%d%d%d%d",&x1,&y1,&x2,&y2); ismax = false;index = t; } // 0 for not on, 1 for textarea, 2 for title area int clickon( int x,int y ){ if( ismax ){ if( y >= hmax - H ) return 2; return 1; } else{ if( x >= x1 && x <= x2 && y >= y2 && y <= y1 ) return y >= y1 - H ? 2 : 1; else return 0; } } }; class click{ public: int x,y; void get( void ){ scanf("%d%d",&x,&y); } }; bool operator == ( click a,click b ){ return a.x == b.x && a.y == b.y; } vector<win> V; int main(void){ int i,j,k; click C[ 100 ]; while( scanf("%d%d%d%d",&N,&H,&wmax,&hmax) != EOF ){ V.clear(); for( i = 0; i < N; i++ ){ win temp;temp.getdata(i); V.insert( V.begin(), temp ); } scanf("%d",&M); for( i = 0; i < M; i++ ) C[i].get(); for( i = 0; i < M; i++ ){ int cnt = -1; bool db = false; if( i < M - 1 && C[i] == C[i+1] ) db = true; for( j = 0; j < N; j++ ){ int status = V[j].clickon( C[i].x, C[i].y ); if( status ) cnt = V[j].index; if( status == 2 ){ while( j<N&&j>0 ) swap( V[j], V[j-1] ),j--; if( db ) V[0].ismax = !V[0].ismax; } if( status == 1 ){ while( j<N&&j>0 ) swap( V[j], V[j-1] ),j--; } if( status ) break; } printf(i?" %d":"%d",cnt ); if( db ) { printf(++i?" %d":"%d",cnt);} } puts(""); } return 0; }
牛人啊、 😉