日常刷题2025-2-6
小红的二叉树
rating:round C
https://ac.nowcoder.com/acm/contest/100902/C
思路:推公式
简单的推公式问题,不必多言
代码
#include <bits/stdc++.h>using u64 = unsigned long long;
using i64 = long long;
typedef std::pair<int, int> pii;
const int INF = 0x3f3f3f3f;
const int mod = 1e9+7;
const long long LINF = 1e18;i64 expit(i64 b, i64 e)
{ i64 r = 1; while (e) { if (e & 1){ r *= b; r %= mod;} b *= b; b %= mod; e >>= 1; } return r;
}void solve(){int n;std::cin >> n;if (n == 1){std::cout << 0 << '\n';return;}i64 ans = expit(2, n-1) % mod - 1 + (expit(2, n - 2) - 1) * 4 % mod;ans %= mod;std::cout << std::max(ans, 0ll) << '\n';
}signed main(){std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout<<std::setiosflags(std::ios::fixed)<<std::setprecision(15);int t = 1, i;for (i = 0; i < t; i++){solve();}return 0;
}
小红的“质数”寻找
rating:round D
https://ac.nowcoder.com/acm/contest/100902/D
思路:构造
在1~9这九个数中,思考每个数开头时的构造方式。
评述
让我们在范围内找一个数,和构造一个在范围内的数是等价的,这道题没做出来很大程度就是因为这个转换没有想清楚。
代码
#include <bits/stdc++.h>using i64 = long long;
using u64 = unsigned long long;typedef std::pair<long long, long long> PII;
const int mod = 998244353;
const int N = 2e6 + 1000;
const int INF = 0x3f3f3f3f;
const long long LINF = 1e18;
const double eps = 1e-12;
const double pi = std::acos(-1);
std::mt19937_64 rnd(std::chrono::steady_clock::now().time_since_epoch().count());
std::uniform_int_distribution<u64> dist_rand(mod / 2, mod - 1);void solve() {std::string s;std::cin >> s;int n = s.size();if (s.front() > '5') {std::cout << "1";for (int i = 1; i <= n - 1; i++) std::cout << "0";std::cout << "1";} else if (s.front() >= '4') {std::cout << "7";for (int i = 1; i < n; i++) std::cout << "0";} else if (s.front() == '3') {std::cout << "5";for (int i = 1; i < n; i++) std::cout << "0";} else if (s.front() == '2') {std::cout << "3";for (int i = 1; i < n; i++) std::cout << "0";} else {std::cout << "2";for (int i = 1; i < n; i++) std::cout << "0";}std::cout << "\n";
}signed main() {std::ios::sync_with_stdio(false), std::cin.tie(nullptr), std::cout.tie(nullptr);int tmp = 1;std::cin >> tmp;while (tmp--)solve();return 0;
}