ABC077D / ARC084B Small Multiple 题解
考虑数位和的来源:从
不难列出转移,设
考虑题目求
答案即为
#include <iostream> #include <queue> #include <string.h> #include <vector> using namespace std; int n; int dis[100005]; vector<pair<int, int>> vec[100005]; signed main() { #ifndef ONLINE_JUDGE freopen("ABC077D.in", "r", stdin); #endif ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n; for (int i = 0; i < n; ++i) { vec[i].push_back({10 * i % n, 0}); vec[i].push_back({(i + 1) % n, 1}); } memset(dis, 0x3f, sizeof dis); dis[1] = 1; priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q; q.push({1, 1}); while (!q.empty()) { auto [d, u] = q.top(); q.pop(); if (d != dis[u]) continue; for (auto [v, w] : vec[u]) { int dd = d + w; if (dd < dis[v]) { dis[v] = dd; q.push({dd, v}); } } } cout << dis[0] << endl; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步