解题思路:建立bool型数组,通过一般的穷举思路不断判断当下情况,至只剩下最后一个数,取下标
注意事项:函数中i作为计数器被反复使用,可以以i=0为界讨论各步骤
参考代码:
#include<stdio.h>
int main()
{
int n;
void count(int);
scanf("%d",&n);
count(n);
return 0;
}
void count(int n)
{
bool s[n];
int i,j=1,kill=0; //定义已去除的数个数kill
for(i=0;i<n;i++) //数组初始化
{
s[i]=0;
}
i=0;
while(n-kill!=1) //剩下最后一个数时停止
{
if(!s[i])
{
if(j==3) //判断是否数到三
{
s[i]=1; //去除下一个未去除的数
kill+=1; //已去除的数个数加一
j=1; //j更新为一
}
else
{
j+=1; //若s[i]存在且j不为3,j+1
}
}
i=(i+1)%n; //通过取模防止数组越界
}
i=0;
while(s[i]==1) //找出最后剩下数的下标
{
i++;
}
printf("%d",i+1); //由于提前一个数停止,故i+1
}
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题6.6 (C++代码)浏览:638 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:687 |
用筛法求之N内的素数。 (C语言代码)浏览:695 |
【偶数求和】 (C语言代码)浏览:445 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:406 |
母牛的故事 (C语言代码)浏览:583 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:589 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:477 |
【计算球体积】 (C语言代码)浏览:1578 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:467 |