美文网首页SimpleCTF
WpsecCTF PPC部分

WpsecCTF PPC部分

作者: 一纸笔墨 | 来源:发表于2018-03-26 18:18 被阅读21次

1 时间计算

这题是选自阿里的2018校招编程题,当时在30分钟之内没做出来,有点沮丧,事后查找了一下别人写的代码,感觉都不是很好,于是自己写了一个
源码稍后发布

#include"stdio.h"

int a[6] = { 0,0,5,6,0,6 };

//排序的数组 排序的位数 排序的类型(true 升序/ false 降序)
int sort(int *a,int num,bool type) {
    for (int i = 0; i<num-1; i++) {
        for (int j = i + 1; j<num; j++) {
            if ((type&&a[i] > a[j]) || (!type&&a[i] < a[j])) {
                a[i] = a[i] ^ a[j];
                a[j] = a[i] ^ a[j];
                a[i] = a[j] ^ a[i];
            }
        }
    }
    return 1;
}
int isInData(int i){
    int b[6]={0},n=5;
    while(i){
        b[n--]=i%10;
        i/=10;
    }
    sort(b,6,true);
    for(int i=0;i<6;i++){
        if(a[i]!=b[i]){
            return 0;
        }
    }
    return 1;
}

int main()
{
    //因为总是要输入6个数的,所以n无所谓的。。但是在线答估计要加
    //int n;
    int max=0,min=0,temp[2]={0},j=0;
    sort(a, 6, true);
    //scanf_s("%d", &n);
    //for (int i = 0; i < 6; i++) {
    //  scanf_s("%d", &a[i]);
    //}
    for(int i=0;i<6;i++){
        min=min*10+a[i];
        max=max*10+a[5-i];
    }

    //规则1 不符合时间规则的统统去掉 可以自己尝试就知道了
    if((min>599&&min<1000)||(min>5599&&min<10000)||(min>59999&&min<100000)||(min>235599)){
        printf("N/A\n");
        return 0;
    }

    //最浪费时间的地方,但是也不慢多少~
    for(int i=min;i<max;i++){
        //判断时间格式是否正确
        if((i/100000<3)&&(i/10000)%10<4&&(i/1000)%10<6&&(i/10)%10<6){
            //判断i中的所有元素是否和a相同   
            if(isInData(i)){
                //printf("%d\t",i);
                temp[j]=i;
                temp[1]=temp[j];
                j=1;
            }
        }
    }

    if(temp[1]==temp[0]){
        printf("%06d\n",temp[0]);
    }
    else{
        printf("%06d %06d\n",temp[0],temp[1]);
    }
    return 0;
}


2 A+B+C

很简单:

print(sum([int(n) for n in input().split(' ')]))


3 螺旋矩阵

需要考验逻辑能力,只能根据点的坐标去计算出它的数值,不能通过预先计算好一个螺旋矩阵来计算坐标的值,需要稍稍费些脑筋

#include"stdio.h"
#include"stdlib.h"
#include"malloc.h"
int n=1;
//计算当前层数外的所有层的点个数
int getCircle(int a){
    if(a==0)
        return 0;
    return (4*n+4-8*a)+getCircle(a-1);
}
int main()
{
    //输入
    int x,y;
    printf("please input your number:\n");
    //scanf("%d %d %d",&n,&x,&y);
    n=5;
    x=3,y=3;
    //计算层数,如果n为单数的话,一半=(n+1)/2
    int halfN=n%2==0?n/2:((n+1)/2);
    int t1=x<halfN?x:n-1-x;
    int t2=y<halfN?y:n-1-y;
    //层数
    int layer=t1<t2?t1:t2;
    int num;
    if(x==layer){
        num=getCircle(layer)+y+1-layer;
    }
    else if(y==n-1-layer){
        num=getCircle(layer)+x+n-3*layer;
    }
    else if(x==n-1-layer){
        num=getCircle(layer+1)-n+2-y+layer*3;
    }
    else{
        num=getCircle(layer+1)-x+1+layer;
    }
    printf("%d\n",num);
    return 0;
}

另外,附带上一份螺旋矩阵的显示:

#include<stdio.h>
#include<stdlib.h>
//N阶螺旋矩阵 
int main() 
{ 
    int N,i,j,n,num=1; 
    int **a; 
    printf("输入你要输出的几阶中断:"); 
    scanf("%d",&N); 
    a = (int **)malloc(sizeof(int *) * N);//每一行的地址
    for(i = 0; i < N; i++)
        a[i] = (int *)malloc(sizeof(int) * N);//存放每一行的数字
    for(n=0;n<=N/2;n++) 
    { 
        for(j=n;j<=N-n-1;j++) 
            a[n][j]=num++; 
          
        for(i=n+1;i<N-n-1;i++) 
            a[i][N-n-1]=num++; 
          
        for(j=N-n-1;j>n;j--) 
            a[N-n-1][j]=num++; 
          
        for(i=N-n-1;i>n;i--) 
            a[i][n]=num++; 
    }   
    //输出螺旋矩阵  
    for(i=0;i<N;i++) 
    { 
        for(j=0;j<N;j++) 
            printf("%2d ",a[i][j]); 
        printf("\n"); 
    }
    return 0; 
}


相关文章

  • WpsecCTF PPC部分

    1 时间计算 这题是选自阿里的2018校招编程题,当时在30分钟之内没做出来,有点沮丧,事后查找了一下别人写的代码...

  • WpsecCTF Stega部分

    1 隐写术1 保存图片至本地,发现底部缺少一部分,修改png的高度,即可得到flag 2 隐写术2 下载文件,发现...

  • WpsecCTF Pwn部分

    1 简单的溢出 题目来源:http://pwnable.kr 之 bof 直接放入IDA,发现func函数存在问题...

  • WpsecCTF Misc部分

    数据包分析1 wireshark打开,之后追踪tcp流,然后得到password,但是发现密码中出现不可键入的值,...

  • WpsecCTF Reverse部分

    1 re签到题 方法有两种:1.直接放到linux中跑一下,然后flag就出来了2.编写程序跑出来,但是v3 v...

  • WpsecCTF Web部分

    web签到题 这题主要考的是对一个网页出现的数据进行收集吧,很简单的一个题目,不过如果你要是没注意一个小小的细节,...

  • WpsecCTF Crypto部分

    1 水流滴滴答 2.丧心病狂的APL 这题原题是来自于plaidctf2018的一道最简单的逆向题,但是要理解起来...

  • Mach-o 分析

    组成 Mach-O通常有三部分组成头部 (Header): Mach-O文件的架构 比如Mac的 PPC, PPC...

  • 亚马逊站内广告费用高转化低?PPC广告助手如何把钱花在刀刃上?

    做亚马逊运营,想要提升品牌曝光量以及新品快速获取流量最有效的途径就是开PPC广告,可是,亚马逊PPC广告对于大部分...

  • 关于PPC的各个面

    通过我自己建站的经历,跟大家分享关于PPC的各个面,一起来辩证看待PPC。 1、PPC推广效果显而易见 (1)排名...

网友评论

本文标题:WpsecCTF PPC部分

本文链接:https://www.haomeiwen.com/subject/amxfcftx.html