|
6#
楼主 |
发表于 2020-7-11 08:15:40
|
只看该作者
用函数的思想包装一下,设一个函数int ysf(m,n),表示输入m和n的时候求出k,那么程序就会变得更清晰易读:
- #include<iostream>
- using namespace std;
- int a[10];
- int i,s,j;
- int ysf(int m,int n)
- {
- for (i=1; i<=m; i++) a[i]=1; ///初始都在圈内
- i=s=j=0;
- while (j<=m-1)
- {
- i++;
- if (i>m) i=1;///围圈
- s=s+a[i];///报数
- if (s==n)
- {
- a[i]=0;//出圈
- s=0;
- ///cout<<i<<' ';
- j++;///+1
- }
- }
- return i;
- }
- int main()
- {
- int m=8,n,k=3;
- n=1;
- while (ysf(m,n)!=k) n++;
- cout<<n;
- return 0;
- }
- /// m=8 n=5 k=3
复制代码 |
|