A——A+B Problem
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include <algorithm> #include <climits> #include <cstring> #include <iostream> using namespace std;const int N = 1e5 + 10 ;int a[N];int b[N];int n;int main () { scanf ("%d" , &n); for (int i = 0 ; i < n; i++) { scanf ("%d" , &a[i]); b[i] = a[i]; } sort (a, a + n); for (int i = 0 ; i < n; i++) { if (b[i] == a[n - 1 ]) cout << b[i] + a[n - 2 ] << ' ' ; else cout << b[i] + a[n - 1 ] << ' ' ; } return 0 ; }
B——Komorebi的数学课 快速幂背公式,改为 LL 就过了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #include <algorithm> #include <cmath> #include <cstring> #include <iostream> using namespace std;long long n;typedef long long LL;LL qmi (LL m, LL k, LL p) { LL res = 1 % p, t = m; while (k) { if (k&1 ) res = res * t % p; t = t * t % p; k >>= 1 ; } return res; } int main () { cin >> n; cout << qmi (n,n,n+2 ) << endl; return 0 ; }
C——次佛锅
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #include <algorithm> #include <climits> #include <cstring> #include <iostream> #include <map> using namespace std;const int N = 1e5 ;map<string, int > m; int main () { string ch; while (cin >> ch) { if (ch[0 ] >= '0' && ch[0 ] <= '9' ) break ; int v; cin >> v; m[ch] += v; } int n = stoi (ch); while (n--) { string ans; cin >> ans; cout << m[ans] << endl; } return 0 ; }
F——黄金律法 一开始只能得 10 分,改成 LL 就全过了,一整个大无语!!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include <algorithm> #include <climits> #include <cstring> #include <iostream> using namespace std;const int N = 1e5 + 10 ;long long w[N], m[N];long long T;bool cmp (long long a, long long b) { return a > b; }int main () { scanf ("%d" , &T); long long n; while (T--) { scanf ("%lld" , &n); memset (w, 0 , sizeof w); memset (m, 0 , sizeof m); for (long long i = 0 ; i < n; i++) scanf ("%lld" , &w[i]); for (long long i = 0 ; i < n; i++) scanf ("%lld" , &m[i]); sort (w, w + n); sort (m, m + n, cmp); long long res = 0 ; for (long long i = 0 ; i < n; i++) res += (long long )w[i] * m[i]; printf ("%lld\n" , res); } return 0 ; }
G——天气预报 暴力+前缀和优化,还是只能得26.66分,只能说我尽力了!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 #include <algorithm> #include <cstring> #include <iostream> using namespace std;const int N = 1e6 + 10 ;long long res;int an[N],bn[N];int main () { int n, a, b; cin >> n >> a >> b; string s; getline (cin, s); getline (cin, s); s = ' ' + s; for (int i = 1 ;i <= n;i++) { an[i] = an[i - 1 ]; bn[i] = bn[i - 1 ]; if (s[i] == '0' ) an[i]++; if (s[i] == '1' ) bn[i]++; } for (int i = 1 ;i <= n;i++) for (int j = i + 1 ;j <= n;j++) { int ca = an[j] - an[i - 1 ]; int cb = bn[j] - bn[i - 1 ]; if (ca >= a && cb >= b) res++; } cout << res << endl; return 0 ; }
K——取模 一开始暴力得了30分,优化了一下还是30分!???气死了
#include <algorithm>
#include <climits>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long LL;
LL n;
LL res;
int main()
{
cin >> n;
for(LL i = 1;i <= n;i++)
res += (n % i) % 998244353;
cout << res % 998244353 << endl;
return 0;
}