最後更新日期 2024 / 01 / 01
https://cses.fi/problemset/task/1083/
給予一堆數字
你的任務是找出那個缺少的數字
已知數字
可以透過梯形公式
所以我們只要用期望的
#include <bits/stdc++.h>
#define int long long
using namespace std;
main() {
ios_base::sync_with_stdio(false);cin.tie(0);
int n, sum = 0;
cin >> n;
for (int i = 0; i < n-1; i++) {
int tmp;
cin >> tmp;
sum += tmp;
}
cout << ((1 + n) * n) / 2 - sum << endl;
}
你有一個由 A、C、G、T 組成的字串 目標是算出同樣的字母最多連續重複幾次把整個字串從左邊往右掃 用一個 curLen 變數維護目前的長度 遇到一個字母時 curLen 加 1 如果跟上個字母不同就把 curLen 歸零 每次掃過一個字母再用 maxLen 維護出現過最大的 curLencppusing namespace std;signed main { char chr, tmp = 'X'; int maxLen = 1, curLen = 1; while cin chr { if tmp = 'X' tmp == chr { curLen++; } else { curLen = 1; } maxLen = maxmaxLen, curLen; tmp = chr; } cout maxLen endl;}
CSES給予一個數字 n 你要使用數字 1 sim n 構造一個陣列 使得不存在任意兩個相鄰數字的差為 1把 n 個數字分成 1 sim lfloor frac{n}{2} rfloor 和 lfloor frac{n}{2}+1 rfloor sim n 兩堆 並穿插構造 ans 陣列就可以保證任兩數的差大約為 lfloorfrac{n}{2}rfloor 最後跑過整個陣列驗證是否合法即可cppusing namespace std;signed main { iosbase::syncwithstdiofalse;cin.tie0; int n; cin n; vectorint arrn; dequeint ans; int mid = n2; for int i = 1; i = n2; i ++ { int leftVal = i; int rightVal = mid + i; ans.pushbackrightVal; ans.pushbackleftVal; } if n 1 == 1 { ans.pushfrontmid + n2 +1; } for int i = 0; i n-1; i++ { if absansi+1 - ansi == 1 { cout "NO SOLUTION" endl; return 0 ; } } for int i = 0; i n; i ++ { cout ansi " "; } cout endl;}
CSES給予一個數字 n 如果他是偶數就把他除 2 否則就把他乘 3 再加 1 重複直到 n 變成 1沒什麼特別的概念 直接模擬操作就可以了cppusing namespace std;signed main { int n; cin n; whilen = 1 { cout n " "; if n 1 == 1 { n = 3; n++; } else { n = 2; } } cout 1 endl;}
CSES