啊,这周又是一堆的作业,只打了一场比赛,没想到遇到了国人的数论专场,m( m( m( m(打着打着就不会了,😔
===== A =====
* 题意:给一个数$n$ ,进行$k$次运算 运算规则,得到$n$除了1之外能够整除$n$的最小数字,然后将结果$f(n)$加到$n$上,在经过$k$次运算,得到最终结果
* 题解:将$n$分为偶数和奇数两部分,如果$n$为偶数,$f(n)$2,$n+f(n)$也是偶数,之后的迭代就直接加$2$就行了,如果$n$为奇数,有两种情况,第一,他为质数,第二,他的$f(n)$为质数,但是无论如何,他在一次迭代后得到的数都是偶数,然后再用一的情况就行了。
* 代码:
#include
using namespace std;
int sdiv(int n){
for(int i = 2; i <= sqrt(n); i++){
if(n % i == 0) return i;
}
return n;
}
int main(){
int n;
scanf("%d",&n);
while(n--){
int k, t;
scanf("%d%d",&k,&t);
if(sdiv(k) % 2 == 1){
k += sdiv(k);
k += (t-1)*2;
}
else
{
k += t *2;
}
printf("%d\n",k);
}
return 0;
}
===== B =====
* 题意:给你一串数$s$$1$,$s$$2$,$s$$3$,$\ldots$,$s$$n$. 如果满足下标$i$$j$,$i$$j+1$满足$i$$j$<$i$$j+1$并且有$s$$i$$j$ <$s$$i$$j+1$ .则称这样的安排是美的,题目要你找出一串序列中最长的,具有美感的数列长度。
* 题解:不多bb,没有太多好说的。
* 代码:
# include
using namespace std;
void solve() {
int n;
cin >> n;
vector a(n + 1), dp(n + 1);
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
int answer = 0;
for (int i = 1; i <= n; i++) {
int mx = 0;
for (int j = 1; j * j <= i; j++) {
if (i % j == 0) {
if (a[j] < a[i]) mx = max(mx, dp[j]);
if (a[i / j] < a[i]) mx = max(mx, dp[i / j]);
}
}
dp[i] = mx + 1;
answer = max(answer, dp[i]);
}
cout << answer << endl;
}
int main() {
int tt = 1;
cin >> tt;
while (tt--)
solve();
}
===== C =====
* 题意:给你一串数$s$$1$,$s$$2$,$s$$3$,$\ldots$,$s$$n$. 先算这串数的lcm,再算这串数的 gcd。
* 题解:开始没仔细思考就直接暴力,直接按题意来算,提交后就后悔了,暴力肯定会超时的啊,后来想到了STL大法,很神奇。
* 代码:
#include
using namespace std;
int main() {
int n;
cin >> n;
vector a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
vector pre(n + 1);
for (int i = 0; i < n; i++) {
pre[i + 1] = __gcd(pre[i], a[i]);
}
vector suf(n + 1);
for (int i = n - 1; i >= 0; i--) {
suf[i] = __gcd(suf[i + 1], a[i]);
}
long long ans = 1;
for (int i = 0; i < n; i++) {
int x = __gcd(pre[i], suf[i + 1]);
ans = ans / __gcd(ans, (long long) x) * x;
}
cout << ans << '\n';
return 0;
}
===== D =====
* 题目:https://codeforces.com/contest/1350/problem/D
* 题解:哦时间不够了,没做完,提交了也没过。。
* 咕咕中,会补的,别催了。
===== E =====
* 题目:https://codeforces.com/contest/1350/problem/E
* 咕咕中,会补的,别催了。
===== F =====
* 题目:https://codeforces.com/contest/1350/problem/F
* 咕咕中,会补的,别催了。