
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n,m,i;
int *p;
int num,j,k;
while(scanf("%d",&n)!=EOF)
{
scanf("%d",&m);
p=(int *)malloc(n*sizeof(int));
memset(p,1,sizeof(p));
num=1;i=0;
j=n;
for(k=0;j>1;k++)
{
if(p[i]!=0)
{
if(num==m)
{p[i]=0;j--;
num=1;
}
else
{
num++;
}
if(i==n-1)
{i=0;}
else
{i++;}
}
else
{ if(i==n-1)
{i=0;}
else
{i++;}
}
}
for(i=0;i<n;i++)
{if(p[i]!=0)
{
printf("%d\n",i);
break;
}
}
}
return 0;
}
uj5u.com熱心網友回復:
修改 memset(p,1,n*sizeof(int));按照提示模擬的演算法,復雜度O(m*n)。m*n<1e7不會超時
uj5u.com熱心網友回復:
首先你的memset用法有兩個錯誤:memset(p,1,sizeof(p));
1,第三個引數寫法上應為n*sizeof(int);
即使更正錯誤1之后,仍然有錯誤:
2,memset不能這樣用整數1填充陣列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/53599.html
標籤:C語言
上一篇:c語言中字符變數賦值問題
