B、Circle

题目描述
现在我们要把1\ldots n1…n这n个数字首尾连接组成一个环,使得相邻元素互质的对数尽可能多。请输出最大对数。
输入描述:
一行一个整数n(1≤ n≤ 1000)。
输出描述:
一行一个整数表示答案。

解题思路

互质对数最多,那么相邻的数字直接1 2 3 4 ……排列下去就行了把,输出n就行了。

print(int(input()))

D、绝地求生(pubg)

问题描述给出T组数据,每行输入a,b两个long long范围内的整数,求他们的最小公倍数

坑点就是会爆掉long long,要么__int128,或者用python。或者用a//gcd(a,b)*b都行。

import math
T = int(input())
for _ in range(T):
    a,b = map(int,input().split())
    ans = a//math.gcd(a,b)*b
    print('Case {}: {}'.format(_ + 1, ans))

E、「水」悠悠碧波

题目描述
帕秋莉掌握了一种水属性魔法
这种魔法可以净化黑暗
帕秋莉发现对于一个黑暗的咒语s,可以使用这个水元素魔法净化它,净化的咒语是一个最长的字符串t,t满足以下条件:
它是s的前缀
它是s的后缀
除前缀和后缀外,它还在s中出现过至少一次
既然你都学会了,那么净化的工作就交给你了!
输入描述:
一行字符串 s ,代表黑暗咒语
输出描述:
一个字符串 t ,表示满足条件的最长净化咒语

解题思路

这……就很离谱。,直接翻译就行了用上C++,string类里面的函数就能快乐AC了

#include <bits/stdc++.h>
using namespace std;

string a, b;
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    cin >> a;
    int n = a.size();
    for (int i = 1; i <= n / 3; ++i) {
        string s1 = a.substr(0, i);
        string s2 = a.substr(n - i, i);
        string s3 = a.substr(i, n - 2 * i);
        if (s1 == s2 && s3.find(s1) != s3.npos) //.npos是一个string类宏常数等于没找到的意思
            b = s1;
    }
    cout << b << endl;
    return 0;
}