cf104 div2 A 几个漂亮的代码
146A - Lucky Ticket
题意:长度为n的数字,如果全部是4或7,并且前一半的和等于后一半的和,则输出“YES”,否则“NO”
我的代码:
n=input()/2 p=raw_input() for c in p: #找不是47的数字 if c not in ["4","7"]: print "NO" exit() #读入的字符串转成int并变成list之后求和 if sum([int(c) for c in p[:n]])==sum([int(c) for c in p[n:]]): print "YES" else: print "NO"
看到另一个人的代码
n = int(raw_input()) s = raw_input() a = [ord(c)-ord('0') for c in s] #string转成数字list,方便后面处理 ans = 1 for i in a: if i not in [4, 7]: ans = 0 break else: if sum(a[:n/2]) != sum(a[n/2:]): ans = 0
print ['NO', 'YES'][ans] #用list索引简化输出
还看到几个特别漂亮的代码:
if set("47").issuperset(set(S)) and sum(map(int,S[:len(S)/2])) == sum(map(int,S[len(S)/2:])): print "YES" else: print "NO"
通过组成的集合是不是"47"的子集来判定有没有超过47的数字 用map(int,S)把字符串转换成int list ,方便求和
最精彩的是这个代码:
s=sorted #变成自动排序的list n=input() z=raw_input() print"NYOE S"[set(z)<=set("47")and s(2*s(z[:n//2]))==s(z)::2]
#set(z)<=set("47") 直接比较子集
#s(2*s(z[:n//2]))==s(z)::2 前一半的和乘以二
cf97div2 D计算几何 暴力
//获得8个数的全排列,然后判断是否满足前四个正方形,后四个矩形,判断使用边长相等+一个直角即可
int px[10], py[10];
double dis(int a, int b) {
return (px[a] - px[b])*(px[a] - px[b])+(py[a] - py[b])*(py[a] - py[b]);
}
bool isRt(int a, int b, int c) {
return ((px[b] - px[a])*(px[c] - px[b])+(py[b] - py[a])*(py[c] - py[b]) == 0);
}
bool isSq(int a, int b, int c, int d) {
int l1 = dis(a, b);
int l2 = dis(b, c);
int l3 = dis(c, d);
int l4 = dis(a, d);
if (l1 == l2 && l2 == l3 && l3 == l4 && isRt(a, b, c))
return 1;
return 0;
}
bool isJu(int a, int b, int c, int d) {
int l1 = dis(a, b);
int l2 = dis(b, c);
int l3 = dis(c, d);
int l4 = dis(a, d);
if (l1 == l3 && l2 == l4 && isRt(a, b, c))
return 1;
return 0;
}
int main() {
for (int i = 1; i <= 8; ++i) {
scanf("%d%d", &px[i], &py[i]);
}
int sq[8] = {1, 2, 3, 4, 5, 6, 7, 8};
int flag = 0;
do {
if (isSq(sq[0], sq[1], sq[2], sq[3]) && isJu(sq[4], sq[5], sq[6], sq[7])) {
flag = 1;
printf("YES\n%d %d %d %d\n%d %d %d %d\n", sq[0], sq[1], sq[2], sq[3], sq[4], sq[5], sq[6], sq[7]);
break;
}
} while (next_permutation(sq, sq + 8));
if (!flag) {
puts("NO");
}
return 0;
}
Python 代码风格PEP8
最近在学习python,知道了关于python代码风格PEB8,转载一篇中文介绍吧,写得蛮好的:
官方文档:http://www.python.org/dev/peps/pep-0008/
转载来源:http://www.blogjava.net/lincode/archive/2011/02/02/343859.html
1 变量 常量 : 大写加下划线


7 days plans
看到一个google的大拿的《30 days challenge》
http://www.mattcutts.com/blog/type/30-days/
“生活在如此刺激的年代,一定要去经历那些最刺激最有意义的东西,这样人生才会变得有意义! ”
netbeans 7.1 安装 python
我最常用的IDE是netbeans,c++,java,php都用它来写。
寒假开始学习python,所以也想用python完成
NetBeans 7.0 中默认的插件中心已经没有python插件了,不过可以手动来添加地址和安装。
方法:NetBeans界面,“工具”->“插件”, 点击“设置”->点击“添加”,然后 添加一个更新中心地址 ,名称可以任意,URL如下: http://deadlock.netbeans.org/hudson/job/nbms-and-javadoc/lastStableBuild/artifact/nbbuild/nbms/updates.xml.gz
因依赖关系,会自动加上Jython插件。
安装完毕可以使用jython,如果想使用cpython则在“工具”->python platfrom里面添加python安装目录里面的python.exe即可
我从官网下载了64位的python 2.7 ,然后把d:\python27 加入了path里面,这样可以在控制台里使用python了
附nb官网的python使用教程: http://netbeans.org/kb/69/python/temperature-converter_zh_CN.html