一、90分代码
#include<iostream>
using namespace std;
int main()
{
int n,k;
cin>>n>>k;
int i,j=n;
int p[n];
for(i=0;i<=n;i++)
{
p[i] = i;
}
while(j>1)
{
for(i=1;i<=n;)
{
if(p[i]==0)
{
i++ ;
}
else if(p[i]%k==0)
{
p[i]=0;j--;i++;
}
else if(p[i]%10==k)
{
p[i]=0;j--;i++;
}
else
{
p[i] = p[i]+j;i++;
}
}
}
for(i=1;i<=n;i++)
{
if(p[i]!=0)
{
cout<<i;
}
}
}
二、原因分析
未考虑特殊情况: 如果输入 5 1 输出会为空
三、解决方式
要加一个if()判断总人数 j 是否为1,也就是只剩下一个人了
以下,修改后的代码
四、100分代码
#include<iostream>
using namespace std;
int main()
{
int n,k;
cin>>n>>k;
int i,j=n;
int p[n];
for(i=0;i<=n;i++)
{
p[i] = i;
}
while(j>1)
{
for(i=1;i<=n;)
{
if(p[i]==0)
{
i++ ;
}
else if(p[i]%k==0)
{
p[i]=0;j--;i++;
if(j==1)
{
break;
}
}
else if(p[i]%10==k)
{
p[i]=0;j--;i++;
if(j==1)
{
break;
}
}
else
{
p[i] = p[i]+j;i++;
}
}
}
for(i=1;i<=n;i++)
{
if(p[i]!=0)
{
cout<<i;
}
}
}
|