概述
平衡三进制
#include <iostream>
using namespace std;
void f(int x) {
if (x == 0) return;
if (x%3 == 2) f(x/3 + 1), cout << 'z';
else if (x%3 == -2) f(x/3 - 1), cout << '1';
else if (x%3 == -1) f(x/3), cout << 'z';
else f(x/3), cout << x%3;
}
int main() {
int n;
cin >> n;
if (n == 0) cout << 0;
else f(n);
return 0;
}
正规数
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
long long a, b, c;
int cnt, ans[10000];
int main() {
for (int i = 0; i <= 31; i ++) {
a = pow(2, i);
for (int j = 0; j <= 20; j ++) {
b = pow(3, j);
if (a*b > 2e9) break;
for (int k = 0; k <= 15; k ++) {
c = pow(5, k);
if (a*b*c > 2e9) break;
ans[++cnt] = a*b*c;
}
}
}
sort(ans+1, ans+1+cnt);
int n;
cin >> n;
cout << ans[n];
return 0;
}
铺设地砖(二)
#include <iostream>
using namespace std;
const int N = 1e5+10, MOD = 1e9+7;
int n, a[N] = {1,2}, sum = 4;
int main() {
cin >> n;
for (int i = 2; i <= n; i ++) {
a[i] = (sum + a[i-2] + 2) % MOD;
sum = (sum + a[i]) % MOD;
sum = (sum + a[i]) % MOD;
}
cout << a[n];
return 0;
}
限时任务
#include <iostream>
#include <cstring>
using namespace std;
const int N = 5100, M = 1e4 + 10;
int n, m, w[N], c[N], f[M], g[M];
int main() {
cin >> n >> m;
int t = 0;
for (int i = 1; i <= n; i ++) cin >> w[i] >> c[i];
for (int i = 1; i <= n; i ++) {
for (int j = m; j >= w[i]; j --) {
f[j] = max(f[j], f[j-w[i]] + c[i]);
g[j] = max(g[j], f[j-1] + c[i]);
g[j] = max(g[j], g[j-w[i]] + c[i]);
// cout << i << ' ' << j << ' ' << f[i][j] << ' ' << g[i][j] << endl;
}
}
cout << 2 * g[m];
return 0;
}
最后
以上就是高贵绿茶为你收集整理的上海市计算机学会月赛2021年3月乙组的全部内容,希望文章能够帮你解决上海市计算机学会月赛2021年3月乙组所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复