周报

C语言算法题

有一次,小鱼要从A处沿直线往右边游,小鱼第一秒可以游7米,从第二秒开始每秒游的距离只有前一秒的98%。有个极其邪恶的猎人在距离A处右边s米的地方,安装了一个隐蔽的探测器,探测器左右x米之内是探测范围。一旦小鱼进入探测器的范围,探测器就会在这一秒结束时把信号传递给那个猎人,猎人在一秒后就要对探测器范围内的水域进行抓捕,这时如果小鱼还在这范围内就危险了。也就是说小鱼一旦进入探测器范围,如果能在下1秒的时间内马上游出探测器的范围,还是安全的。现在给出s和x的数据,请你判断小鱼会不会有危险?如果有危险输出’y’,没有危险输出’n’。
//感谢黄小U饮品完善题意
输入格式 一行内输入两个实数,用空格分隔,表示s和x。均不大于100
输出格式 一行内输出’y’或者’n’表示小鱼是否会有危险。
输入输出样例 输入 #1
复制
14 1 输出 #1
复制
n

#include<stdio.h>
#include<math.h>
int main()
{
    int s,x,i;
    double m=0.0;
    scanf("%d %d",&s,&x);
    for(i=1;;i++)
    {
        m = m + 7 * pow(0.98,i-1);
        if(m > (s-x))
        {
            m = m + 7 * pow(0.98,i);
            if(m > (s+x))
            {
                printf("n");
                break;
            }
            else
            {
                printf("y");
                break;
            }
        }
    }
    return 0;
}

这个题不难,我自己做完之后还是看了一些题解。。。然后就人清差距了,下面是某题解答案:

#include <stdio.h>
#include <math.h>
int main()
{
    double s, x, t;
    scanf("%lf %lf", &s, &x);
    t = log((s+x-350)/(s-x-350))/log(0.98);
    printf("%c\n", t < 1 ? 'n' : 'y');
    return 0;
}

题目描述 给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。
输入格式 一个整数 NNN
输出格式 一个整数,表示反转后的新数。
输入输出样例 输入 #1
复制
123 输出 #1
复制
321输入 #2
复制
-380 输出 #2
复制
-83 说明/提示 数据范围
−1,000,000,000≤N≤1,000,000,000-1,000,000,000≤N≤1,000,000,000 −1,000,000,000≤N≤1,000,000,000。
noip2011普及组第一题

#include<stdio.h>
#include<string.h>
int main()
{
    char a[99];                 
    int b,i,j;
    scanf("%s",a);              
    for( i = 97; i > 0; i--)
    {
        if( a[i] == '0' && a[i+1] == '\0')
        a[i] = '\0'; 
        j = strlen(a);
    }
    if(a[0]=='-')              
    for(i=1;i<=j/2;i++)
    {
        b=a[i];
        a[i]=a[j-i];
        a[j-i]=b;
          
    }
    else 
    for(i=0;i<j/2;i++)
    {
        b=a[i];
        a[i]=a[j-i-1];
        a[j-i-1]=b;
              
    } 
    puts(a);                     
    return 0;
} 

题理解很简单,但实现还是比较繁琐的。

题目描述为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有 nnn 张地毯,编号从 111 到 nnn。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。输入格式输入共 n+2n + 2n+2 行。第一行,一个整数 nnn,表示总共有 nnn 张地毯。接下来的 nnn 行中,第 i+1i+1i+1 行表示编号 iii 的地毯的信息,包含四个正整数 a,b,g,ka ,b ,g ,ka,b,g,k,每两个整数之间用一个空格隔开,分别表示铺设地毯的左下角的坐标 (a,b)(a, b)(a,b) 以及地毯在 xxx 轴和 yyy 轴方向的长度。第 n+2n + 2n+2 行包含两个正整数 xxx 和 yyy,表示所求的地面的点的坐标 (x,y)(x, y)(x,y)。输出格式输出共 111 行,一个整数,表示所求的地毯的编号;若此处没有被地毯覆盖则输出 -1。输入输出样例输入 #1 复制 3
1 0 2 3
0 2 3 3
2 1 3 3
2 2
输出 #1 复制 3

输入 #2 复制 3
1 0 2 3
0 2 3 3
2 1 3 3
4 5输出 #2 复制 -1

#include<stdio.h>
#define N 10000 
int a[N], b[N], g[N], k[N];
int main() 
{
    int n, x, y;
    scanf("%d", &n);
    for(int i = 0; i < n; i++)
    {
        scanf("%d%d%d%d", &a[i], &b[i], &g[i], &k[i]);
    }
    scanf("%d%d", &x, &y);
    int ans = -1;
    for(int i = 0; i < n; i++) 
    {
        if(x >= a[i] && y >= b[i] && x <= a[i] + g[i] && y <= b[i] + k[i]) 
        {
            ans = i + 1;
        }
    }
    printf("%d\n", ans);
    return 0;
}

SQL学习

SQL简介

SQL 指结构化查询语言
SQL 使我们有能力访问数据库
SQL 是一种 ANSI 的标准计算机语言

SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。

SQL SELECT 语句

SELECT 语句用于从表中选取数据。

结果被存储在一个结果表中(称为结果集)。

SQL SELECT 语法

SELECT 列名称 FROM 表名称

以及:

SELECT * FROM 表名称
* 是选取所有列的快捷方式。

注释:SQL 语句对大小写不敏感。SELECT 等效于 select。

SQL SELECT DISTINCT 语句

在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。

关键词 DISTINCT 用于返回唯一不同的值。

语法:
SELECT DISTINCT 列名称 FROM 表名称

WHERE 子句

如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。

语法
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

操作符描述
=等于
<>不等于
>大于
<小于
>=大于等于
<=小于等于
BETWEEN在某个范围
LIKE搜索某种模式

注释:在某些版本的 SQL 中,操作符 <> 可以写为 !=。

web安全

SQL注入

注入基础知识

万能密码是典型的SQL注入;
注入基本分为:
数字型和字符型,数字型无需闭合引号,字符型需闭合引号;
常见的注入叫法:
POST注入:注入字段在POST数据中;
Cookie注入:注入字段在Cookie数据中;
延时注入:使用数据库延时特性注入;
搜索注入:注入处为搜索的地点;
base64注入:注入字符串需要经过base64加密;

查询的方式:不同的数据库通常有不同的注入方法,但原理基本相似。
1.表或列来提取信息
2.利用数据类型转换错误提取信息
3.从数据库系统视图获取源数据
4.order by、union、having等语句
5.数据库提供的函数
6.动态执行语句

SQL注入的原理:

SQL注入漏洞形成的原因就是:用户输入的数据被SQL解释器执行。
1.参数用户可控:前端传给后端的参数内容是用户可以控制的。
2.参数带入数据库查询:传入的参数拼接到SQL语句,且带入数据库查询。

SQL手工注入基本方法

1.判断是否能够注入

'

and 1=1

and 1=2

2.order by 判断列数

3.union select 回显

4.数据库名

select schema_name from information_schema.schemata limit 0,1

5.数据表

select table_name from information_schema.tables where table_schema=( select database()) limit 0,1

6.字段

select column_name from information_schema.columns where table_name='xxx' limit 0,1

7.内容

select xxx from table.column limit 0,1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值