2022年

第一题

# include<iostream>
# include<string>
# include<iomanip>
# include<cmath>

using namespace std;

bool is_prime(int n){
    for(int i = 2; i <= n/2; i++)
    {
        if(n % i == 0)
            return false;
    }
    
    return true;
}

int str2num(string s){
    int sum = 0, len = s.size();
    for(int j = len - 1; j >= 0; j--)
        sum += int(s.at(j) - '0') * pow(10, len - 1 - j);
    return sum;
}

bool judge(string s){
    int len = s.size();
    int n;
    string s1, s2;
    if(len % 2 == 1){
        n = len / 2 + 1;
        s1 = s.substr(0, n);    s2 = s.substr(n - 1, n);
    }
    else{
        n = len / 2;
        s1 = s.substr(0, n);    s2 = s.substr(n, n);
    }

    // 在s1和s2都是质数的情况下判断是否是对称的,如果对称则返回true,其他都返回false
    if( is_prime(str2num(s1)) && is_prime(str2num(s2)) ){
        for(int i = 0; i < n; i++){
            if(s1.at(i) != s2.at(n - i - 1))
                return false;
        }

        return true;
    }
    else
        return false;
}

int main(){
    int count = 0, n = 0, num = 10;
    // 一开始便可以设置右对齐
    cout << setiosflags(ios::right);

    while(count < 50){
        string s = to_string(num++);
        if(judge(s)){
            // 先留空,再输出,可以得到整齐的输出格式
            cout << setw(8) << s;
            count ++;
            n++;
        }
        if(n == 5){
            n = 0;
            cout << endl;
        }            
    }
    return 0;
}

代码运行结果如下:

      11      22      33      55      77
     111     131     171     313     373
     717     737     797     979    1111
    1331    1771    3113    3773    7117
    7337    7997    9779   10101   10701
   11311   13131   14941   15151   15751
   16761   17971   18181   19191   19991
   31113   31313   33733   34743   35353
   35953   37373   38383   38983   70107
   70907   72727   73337   73937   74347

第二题

# include<ctime>
# include<iostream>
# include<iomanip>
using namespace std;

bool is_leap(int n){
    if((n%4 == 0 && n/100 !=0) || n % 400 ==0)
        return true;
    else
        return false;
}

int main(){
    int year, month, day, hour, minute, second;

    int second_num = time(0);
    // 分别计算当前距离1970年1月1日有多少天,以及当前这一天有多少秒
    int day_num = second_num /(24 * 60 *60);
    second_num = second_num % (24 *60 *60);
    
    // 计算当天时间
    hour = second_num / (60 * 60);
    second_num = second_num % (60 * 60);
    minute = second_num / 60;
    second = second_num % 60;

    // 计算当前日期
    // 从1970年开始,先算年份
    // 若今年是平年且剩余天数大于365 或者 今年是闰年剩余天数大于366 则进入循环
    // 给年数加一,同时剩余天数减去相应的天数
    year = 1970;
    while( (is_leap(year) && day_num > 366) || (!is_leap(year) && day_num > 365) ){
        if(is_leap(year))
            day_num -= 366;
        else
            day_num -= 365;
        year ++;
    }

    // 根据今年的年份,给month_num数组相应的赋值
    int month_l[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int month_c[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int month_num[12];
    if(is_leap(year))
        for(int i = 0; i < 12; i++)
            month_num[i] = month_l[i];
    else
        for(int i = 0; i < 12; i++)
            month_num[i] = month_c[i];

    // 计算月份
    int i;
    for(i = 0; month_num[i] < day_num; i++)
        day_num -= month_num[i];
    month = i + 1;
    // 注意当前日期是已经过去的天数 + 1
    day = day_num + 1;

    cout << "Current Time(GMT):";
    cout << year << "-" << setw(2) << setfill('0') << month << "-" << setw(2) << setfill('0') << day << "," ;
    cout << setw(2) << setfill('0') << hour << ":" << setw(2) << setfill('0') << minute << ":"  << setw(2) << setfill('0') << second << endl;

    return 0;
}

运行结果如下:

Current Time(GMT):2022-11-30,07:34:10
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2022工控CTF是一场以工业控制系统为主题的网络安全竞赛。随着工业互联网的普及和工控系统的数字化转型,工控CTF成为了信息安全领域的重要赛事之一。 在2022工控CTF中,参赛团队将面临一系列与工控系统相关的攻防挑战。这些挑战可以涉及到工控设备的漏洞利用、网络通信的拦截与解密、工控协议的逆向工程等多个方面。参赛团队需要通过团队合作和技术创新来解决这些挑战,保护工控系统的安全。 比赛期间,参赛团队将利用自身的技术实力和经验来攻击对手的工控系统,并尽量保护自己的系统免受攻击。团队成员需要通过分析工控设备的漏洞、拦截网络通信和复现攻击场景等手段,来获取对手的密码或控制权限,并将此作为攻击对手的关键。 这次工控CTF不仅是对技术实力的考验,也是对团队协作能力的挑战。参赛团队需要有效地分工合作,每个成员发挥擅长的技能,进行攻防策略的制定和执行。只有团队成员之间的密切配合和高效沟通,才能在限时的比赛中取得优异的成绩。 通过参与2022工控CTF,参赛团队将能够提升自身的技术水平和安全意识,了解工控系统的安全挑战,并积累宝贵的实战经验。此外,比赛还将为工控安全领域的研究和发展带来新的思路和解决方案。总之,2022工控CTF将是一场精彩纷呈的网络安全盛宴,为参赛者带来无尽的挑战和收获。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值