C++程序:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个 人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。
时间: 2024-01-08 17:03:18 浏览: 71
下面是使用循环计算出所有人出队顺序的 C++ 程序:
```
#include <iostream>
using namespace std;
int Josephus(int n, int m, int k) {
int s = 0;
for (int i = 2; i <= n; i++) {
s = (s + m) % i;
}
return (s + k - 1) % n + 1;
}
int main() {
int n, m, k;
cout << "请输入人数 n: ";
cin >> n;
cout << "请输入报数上限 m: ";
cin >> m;
cout << "请输入起始编号 k: ";
cin >> k;
cout << "出队顺序为: ";
for (int i = 0; i < n; i++) {
cout << Josephus(n, m, k) << " ";
k = Josephus(n-i, m, k);
}
cout << endl;
return 0;
}
```
该程序通过 Josephus 函数计算每一轮出队的人的编号,最后使用循环输出所有人的出队顺序。
相关问题
用c++写一个1+2+...+n的程序,n<=20000000000
好的,以下是C语言的代码:
```c
#include <stdio.h>
int main() {
long long n, i;
scanf("%lld", &n);
for (i = 1; i <= n; i++) {
printf("%lld ", i);
}
return 0;
}
```
但是需要注意的是,如果n太大(比如题目中的20000000000),程序可能会卡死或者耗时过长,需要考虑优化算法。
用c++写一个1+2+...+n的和的程序,n<=200000000000
以下是C语言的程序:
```c
#include <stdio.h>
int main() {
long long n, sum;
printf("请输入n的值:");
scanf("%lld", &n);
sum = (n + 1) * n / 2;
printf("1到%lld的和为:%lld\n", n, sum);
return 0;
}
```
注意,由于n的值可能非常大,因此要使用long long类型来存储n和sum,否则可能会发生溢出。另外,本程序的时间复杂度为O(1),即不随n的大小而变化。
相关推荐
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)