啊,这周又是一堆的作业,只打了一场比赛,没想到遇到了国人的数论专场,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 * 咕咕中,会补的,别催了。 ​