#include <malloc.h>
typedef int datatype
typedef struct node {
datatype info
struct node *next
}NODE
void show(NODE *head) {
NODE *p
for(p = head->next p != head p = p->next)
printf("%d ",p->info)
printf("\n")
}
NODE *josefnode(int n) { // 创建有头结点的单向循环链表
int i
NODE *p, *head
head = p = (NODE *)malloc(sizeof(NODE))
head->info = 0
head->next = NULL
for(i = 0 i < n ++i) {
p->next = (NODE *)malloc(sizeof(NODE))
p->next->info = i + 1
p = p->next
}
p->next = head
return head
}
void josef(int n,int s, int m) {
int cnt
NODE *h, *p, *q
if(s > n) {
printf("n = %d, s = %d, s > m\n",n,s)
return
}
h = josefnode(n)
for(cnt = 1,p = h cnt < s ++cnt,p = p->next)
show(h)
cnt = 0
while(h->next != h) {
if(p->next == h) p = p->next
++cnt
if(cnt % m == 0) {
q = p->next
printf("%d ",q->info)
p->next = q->next
free(q)
}
else p = p->next
}
printf("\n")
free(h)
h = NULL
}
int main() {
int n,s,m
printf("输入 n s m : ")
while(scanf("%d%d%d", &n,&s,&m) == 3 && n && s && m) {
josef(n,s,m)
printf("输入 n s m : ")
}
return 0
}
#include<stdio.h>void main()
{
int day, x1, x2
day = 5
x2 = 1
while (day>0)
{
x1 = (x2 + 1) * 2
x2 = x1
day--
}
printf("total=%d\n", x1)
}