#include<stdio.h>
#include<stdlib.h>
#define w 5
struct node {
int data;
struct node *next;
};
struct node *creat(struct node *head, int n){
int i;
struct node *tail, *p, *q;
head = (struct node *)malloc(sizeof(struct node));
head -> next = NULL;
head -> data = 1;
tail = head;
for(i = 2; i <= n; i++){
p = (struct node *)malloc(sizeof(struct node));
p -> data = i;
p -> next = NULL;
tail -> next = p;
tail = p;
}
tail -> next = head;
return head;
}
int del(struct node * head, int n, int m){ // 敢死队 错了我
int num = 0;
int count1 = 0; // 每次就调用一个 del函数 次数初始化
struct node *p, *q;
q = head;
while(q -> next != head){
q = q -> next;
}
while(1){ // 一般 检验初始化, 采用 输入多次相等的值 来看/
p = q -> next;
num++;
if(num % m == 0){ // 找到 相应的值 然后就行 想要的操作;
if(p -> data == 1){
// printf("count2 == %d\n", count);
count1++;
return count1;
}
q -> next = p -> next;
count1++;
}
else q = p;
}
}
int main(){
int i, n;
while(scanf("%d",&n) && n){
struct node * head;
head = creat(head, n);
printf("%d\n", del(head, n, w));
}
return 0;
}
#include<stdlib.h>
#define w 5
struct node {
int data;
struct node *next;
};
struct node *creat(struct node *head, int n){
int i;
struct node *tail, *p, *q;
head = (struct node *)malloc(sizeof(struct node));
head -> next = NULL;
head -> data = 1;
tail = head;
for(i = 2; i <= n; i++){
p = (struct node *)malloc(sizeof(struct node));
p -> data = i;
p -> next = NULL;
tail -> next = p;
tail = p;
}
tail -> next = head;
return head;
}
int del(struct node * head, int n, int m){ // 敢死队 错了我
int num = 0;
int count1 = 0; // 每次就调用一个 del函数 次数初始化
struct node *p, *q;
q = head;
while(q -> next != head){
q = q -> next;
}
while(1){ // 一般 检验初始化, 采用 输入多次相等的值 来看/
p = q -> next;
num++;
if(num % m == 0){ // 找到 相应的值 然后就行 想要的操作;
if(p -> data == 1){
// printf("count2 == %d\n", count);
count1++;
return count1;
}
q -> next = p -> next;
count1++;
}
else q = p;
}
}
int main(){
int i, n;
while(scanf("%d",&n) && n){
struct node * head;
head = creat(head, n);
printf("%d\n", del(head, n, w));
}
return 0;
}