| 记录编号 |
397523 |
评测结果 |
AAAAATATAATTTA |
| 题目名称 |
575.猴子和香蕉 |
最终得分 |
64 |
| 用户昵称 |
confoo |
是否通过 |
未通过 |
| 代码语言 |
C++ |
运行时间 |
7.002 s |
| 提交时间 |
2017-04-20 16:56:34 |
内存使用 |
38.43 MiB |
显示代码纯文本
#include <cstdio>
#include <cstring>
const int C = 25;
int n, m, k, x[C], y[C], vis[int(1e7)];
bool check(int a, int dep) {
if (dep == n) return !a;
if (!a) return 1;
if (dep < vis[a]) return vis[a];
for (int i = 1; i <= m; i++) if (a >= y[i] && (a - y[i])%x[i] == 0) {
if (check(a - y[i] - (a - y[i])/x[i], dep + 1)) return (vis[a] = dep);
}
return 0;
}
int main() {
freopen("monkeys.in", "r", stdin);
freopen("monkeys.out", "w", stdout);
memset(vis, -1, sizeof vis);
scanf("%d%d", &n, &m);
n++;
for (int i= 1; i <= m; i++) scanf("%d%d", x + i, y + i);
scanf("%d", &k);
int i, tot;
for (i = 1, tot = 0; tot < k && i < int(1e7); i++)
if (check(i, 1)) tot++;
// for (int i = 1; i <= 15 ;i++) if (check(i, 1)) printf("%d\n", i);
printf("%d\n", tot == k ? i - 1 : -1);
}