每日一题 1007+Misc Another 01Game

Another 01Game

题目描述

题目给了一个txt文件,里边只有01串。

解题思路

题目给了思路:
0和1的数量很关键,首先统计0和1的数量:
1369.0/7 = 195.57142857142858
1369.0/8 = 171.125
1369.0 ** 0.5 = 37.0
1369不是7和8的倍数,说明很可能和ASCII没关系。1369 是 37 的平方,说明可以由0和1正好组成一个正方形(二维码,QR code)。
可以使用Python、MATLAB 等编程生成图片。扫描得到 另一个01字符串。
统计字符串长度,可以当作 ASCII 编程解出 flag。

解题脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/env python
import qrcode


qr = qrcode.QRCode(
version = 7,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4
)
qr.add_data('''0000000111011101100011011111010000000011111011011101
11100110010010101111100100010101101110110100010101010100010
01000101101100110011010010100101000100100010110110011010001
01010001010001001111101110001000011001010111101111100000000
10101010101010101010101000000011111111011011101010110000001
11111111000100000111011101010101010100011101100011011101000
10001010010100101010101011111001110010000110111000011110100
11110001101110001011010100101110110100111010010110110010110
01101101101000100100101001001100101011101010101010101111110
00000110111100001100111101000101001101110101110101110001010
00101001001111001010101110001010111110100100110100011110100
01001101010100100110010101100001000001000101100101010101110
10100101110101000100101110101010111010100000100000011001101
01010001111101001010010101100110010101010111010010010010001
00101011011110101001110110010010011000101100111010000111101
01110001011100000011110111010110001011111000010110001101110
00100100101011110110100000111110011100100010011011010000110
10110010110110100010000110010110011000000101110001101100010
11001010100000100011111111000011001010110011000111001010000
00010011101110110111000101010100001111101010011100110101011
01011100010010001010011011100110011111000000010101000101100
00011000011101010001000100010001010000010101001010101101000
00100111110100110000010110001110100010011000000010010110010
0011011011001010110''')
qr.make(fit=True)
img = qr.make_image()
img.save("test.png")

扫码还是得到01字符串,有189个01,根据题目提示,每7个一组,前面加0,用ASCLL码解码即可。
注意:flag中0和O的输入!!!

1007 素数对猜想

题目描述

让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N(<10^5),请计算不超过N的满足猜想的素数对的个数。

输入格式

输入在一行给出正整数N。

输出格式

在一行中输出不超过N的满足猜想的素数对的个数。

题目分析

算法很简单,就是先判断是否是素数,在相邻的两个数相减,为2则个数加1.

C++代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n;
cin>>n;
int count=0;
int a=2,b=3;
for(int i=5;i<=n;i++)
{
bool t=true;
for(int j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
t=false;
break;
}
}
if(t)
{
a=b;
b=i;
if((b-a)==2) count++;
}
}
cout<<count<<endl;
return 0;
}
文章目录
  1. 1. Another 01Game
    1. 1.1. 题目描述
    2. 1.2. 解题思路
    3. 1.3. 解题脚本
  2. 2. 1007 素数对猜想
    1. 2.1. 题目描述
    2. 2.2. 输入格式
    3. 2.3. 输出格式
    4. 2.4. 题目分析
    5. 2.5. C++代码