标签: 知识点

30 篇文章

CSP-J 2023 第二轮认证 题解

[CSP-J 2023] 小苹果

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n;
    cin >> n;
    int cnt = 0, ans = 0;
    while (n > 0) {
        cnt++;
        if (ans == 0 && n % 3 == 1) ans = cnt;
        n -= (n + 2) / 3;
    }
    cout << cnt << " " << ans << "\n";
    return 0;
}
CSP-S 2023 第二轮认证 题解

密码锁

#include <bits/stdc++.h>
int n;
int a[13][7], b[7];
bool check(int i) {
int cnt = 0;
for(int j = 1; j <= 5; j++) cnt += (a[i][j] != b[j]);
if(cnt == 1) return true;
else if(cnt != 2) return false;
for(int j = 1; j < 5; j++)
if(a[i][j] != b[j] && a[i][j + 1] != b[j + 1] && (b[j] - a[i][j] + 10) % 10 == (b[j + 1] - a[i][j + 1] + 10) % 10) return true;
return false;
}
bool check() {
for(int i = 1; i <= n; i++) if(!check(i)) return false;
return true;
}
int main() {
freopen("lock.in", "r", stdin);
freopen("lock.out", "w", stdout);
scanf("%d", &n);
for(int i = 1; i <= n; i++) for(int j = 1; j <= 5; j++) scanf("%d", &a[i][j]);
int ans = 0;
for(b[1] = 0; b[1] <= 9; b[1]++)
for(b[2] = 0; b[2] <= 9; b[2]++)
for(b[3] = 0; b[3] <= 9; b[3]++)
for(b[4] = 0; b[4] <= 9; b[4]++)
for(b[5] = 0; b[5] <= 9; b[5]++)
ans += check();
printf("%d\n", ans);
return 0;
}
C++洗牌 题解

原题目&题目要求:

题目描述

小明把 n (n 为偶数)张牌按编号顺序 1, 2, 3, ..., n 排成一堆,然后开始洗牌。一次洗牌的过程如下:
1. 对于一堆牌编号为 a1, a2, ..., an,首先将牌分成均匀的两堆:
a1, a2, ..., am和am+1, am+2, ..., an (其中m=n/2)
2. 然后按顺序交叉插入:
a1,am+1,a2,am+2,...,am,an
洗牌过程总共重复了 k 次,请你编程帮助小明模拟洗牌的过程。
例如 n = 6,初始时牌堆中牌的编号为 1, 2, 3, 4, 5, 6。
首次洗牌时,会将牌分成 1, 2, 3 和 4, 5, 6 两堆,交叉插入后的结果为 1, 4, 2, 5, 3, 6。
再次洗牌,会将牌分成 1, 4, 2 和 5, 3, 6 两堆。交叉插入后得到 1, 5, 4, 3, 2, 6。

输入格式

正整数 n (牌的数量), k (洗牌的次数), i (牌的位置)。1 ≤ n, k ≤ 1,000,1 ≤ i ≤ n, 保证 n 是偶数。

输出格式

n 张牌洗牌 k 次后,牌堆中第 i 张牌的编号。

输入样例

6 2 5
         

输出样例         

2
Firefox 账户的坑

最近在手机上安装了Firefox,发现即使是同一个邮箱,手机上的账号竟然跟电脑上的不同步

然后我发现了:

火狐国际版Firefox账户网址

这是电脑上firefox的网站: