[CF1070A]Find a Number_bfs
Find a Number
题目链接:http://codeforces.com/problemset/problem/1070/A
数据范围:略。
题解:
因为$d$和$s$比较小可以搜。
这就很$gay$了...我根本没想到可以宽搜。
想到搜索就非常简单了,从小到大枚举就好了。
代码:
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #include <bits/stdc++.h> #define inf 0x3f3f3f3f #define D 510 #define S 5010 using namespace std; int d, s; bool vis[D][S]; queue <pair< int , int > >q; pair<pair< int , int >, int > p[D][S]; void bfs() { vis[0][0] = true ; q.push(make_pair(0, 0)); while (!q.empty()) { int x = q.front().first, y = q.front().second; q.pop(); for ( int i = 0; i < 10; i ++ ) { int x_ = (x * 10 + i) % d, y_ = y + i; if (y_ <= s && !vis[x_][y_]) { vis[x_][y_] = true ; p[x_][y_] = make_pair(make_pair(x, y), i); q.push(make_pair(x_, y_)); } } } } void output( int x, int y) { if (!x && !y) { return ; } output(p[x][y].first.first, p[x][y].first.second); putchar ( '0' + p[x][y].second); } int main() { cin >> d >> s ; bfs(); if (!vis[0][s]) { puts ( "-1" ); } else { output(0, s); } return 0; } |
| 欢迎来原网站坐坐! >原文链接<
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步