首页 > 编程知识 正文

计蒜客题库,计蒜客登陆

时间:2023-05-05 06:54:20 阅读:266226 作者:1569

问题描述

有一种酒桌游戏叫做“敲7”,规则是从一个人开始,说出任意数字,其他人会顺序往后报,如果一个数字包含 7,或者是 7 的倍数,那么需要敲打杯子或盘子,不能说出。
现在 n 个人围坐在一个圆桌周围,他们编号从 1 到n 顺时针排列。从某一人开始报出一个数字,其他人会按照顺时针方向顺序往后报(加一),如果某个人的数字包含 7,或者是 7 的倍数,那么他将退出游戏,下一个人继续接着报,直到剩一个人为止。
输入格式
第一行输入三个整数,n,m,t。n 代表总人数,m 代表从第 m 个人开始报数,他报出的数字是 t。1≤m≤n≤1000,1≤t≤100)接下来的 n 行,每一行输入一个字符串,代表这 n 个人的名字,字符串的长度不超过 20。
输出格式
输出剩下的那个人的名字,占一行。
样例输入
5 3 20
donglali
nanlali
xilali
beilali
chuanpu
样例输出
chuanpu

AC代码 #include <iostream>#include <cstdio>#include <cstring>using namespace std;int is_out(int n) { if (n%7 ==0) return 1; while (n != 0) { if (n % 10 == 7) return 1; n /= 10; } return 0;}int main() { int n, m, t,ans; cin >> n >> m >> t; int a[n + 10]; for (int i = 0; i <= n; i++) { a[i] = 1; } int cnt = 0; int cur = m - 1; int num = t-1; while (cnt != n - 1) { while (a[cur] == 0) { cur=(cur+1)%n;} num++; if (is_out(num)) { a[cur] = 0; cnt++; } cur = (cur + 1) % n; } for (int i = 0; i < n; i++) { if (a[i] == 1) { ans = i; break; } } string ou; while (ans--) cin >> ou; cin >> ou; cout << ou; return 0;}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。