【题目】一只兔子躲进了n个环形分布的洞的某一个中。狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子
/****************************
- 文件名:[作业]
- 作者:〈漆黑〉
- 描述:〈 一只兔子躲进了n个环形分布的洞的某一个中。狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中??
输入
有多组测试数据,读取到文件结尾符为止。每组测试数据输入n(2≤n≤100),即洞穴个数。输入到文件结尾符为止。
输入
兔子可能藏匿的洞。如果不止一个,按从小到大的顺序输出。如果不存在,输出空行。 〉 - 创建时间:2019.7.30
****************************/
/****************************
* 文件名:[作业]
* 作者:〈漆黑〉
* 描述:〈 一只兔子躲进了n个环形分布的洞的某一个中。狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中??
输入
有多组测试数据,读取到文件结尾符为止。每组测试数据输入n(2≤n≤100),即洞穴个数。输入到文件结尾符为止。
输入
兔子可能藏匿的洞。如果不止一个,按从小到大的顺序输出。如果不存在,输出空行。 〉
* 创建时间:2019.7.30
****************************/
#include <iostream>using namespace std;int main() {while (1) {int n, sum = 0;//n个洞穴,sum存储狼找到洞穴的个数cout << "请输入n(2-100):";while(!(cin >> n)) return 0;int* rabbit = new int[n - 1];for (int i = 0; i < n - 1; i++) {rabbit[i] = 0;//0为未找的,1为找过的}for (int i = 1; i < 999; i++) {rabbit[((1 + i) * i / 2) % n - 1] = 1;//[n(1+n)/2]%n即为要找的洞穴}for (int i = 1; i < n - 1; i++) {//从第一个洞穴找if (rabbit[i] == 0) cout << i + 1;if (i != n - 2) cout << " ";}if (rabbit[0] == 0) {//第n个洞穴cout << n;}cout<< endl;//无处可藏输出空行}
}
【题目】一只兔子躲进了n个环形分布的洞的某一个中。狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子
/****************************
- 文件名:[作业]
- 作者:〈漆黑〉
- 描述:〈 一只兔子躲进了n个环形分布的洞的某一个中。狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中??
输入
有多组测试数据,读取到文件结尾符为止。每组测试数据输入n(2≤n≤100),即洞穴个数。输入到文件结尾符为止。
输入
兔子可能藏匿的洞。如果不止一个,按从小到大的顺序输出。如果不存在,输出空行。 〉 - 创建时间:2019.7.30
****************************/
/****************************
* 文件名:[作业]
* 作者:〈漆黑〉
* 描述:〈 一只兔子躲进了n个环形分布的洞的某一个中。狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中??
输入
有多组测试数据,读取到文件结尾符为止。每组测试数据输入n(2≤n≤100),即洞穴个数。输入到文件结尾符为止。
输入
兔子可能藏匿的洞。如果不止一个,按从小到大的顺序输出。如果不存在,输出空行。 〉
* 创建时间:2019.7.30
****************************/
#include <iostream>using namespace std;int main() {while (1) {int n, sum = 0;//n个洞穴,sum存储狼找到洞穴的个数cout << "请输入n(2-100):";while(!(cin >> n)) return 0;int* rabbit = new int[n - 1];for (int i = 0; i < n - 1; i++) {rabbit[i] = 0;//0为未找的,1为找过的}for (int i = 1; i < 999; i++) {rabbit[((1 + i) * i / 2) % n - 1] = 1;//[n(1+n)/2]%n即为要找的洞穴}for (int i = 1; i < n - 1; i++) {//从第一个洞穴找if (rabbit[i] == 0) cout << i + 1;if (i != n - 2) cout << " ";}if (rabbit[0] == 0) {//第n个洞穴cout << n;}cout<< endl;//无处可藏输出空行}
}
发布评论