SDUT 불사 대

8658 단어 du
제목 설명
'결사대' 라 고 하면 제 가 영 화 를 소개 하 러 왔 다 고 생각 하지 마 세 요. 데이터 구조 에 이런 프로 그래 밍 문제 가 있 기 때문에 원 제 는 다음 과 같 습 니 다.
 
M 명의 결사대 원 이 적의 토 치 카 를 폭파 하려 고 하 는데 아무 도 가 고 싶 지 않 았 다. 소대장 은 윤회 수 를 세 는 방법 으로 어느 전사 가 임 무 를 수행 할 것 인 지 를 결정 하기 로 결정 했다.만약 전 전사 가 임 무 를 완성 하지 못 했다 면, 전 사 를 한 명 더 보 내야 한다.현재 모든 전사 에 게 하나의 번 호 를 만들어 주 고 모두 한 바퀴 빙 둘 러 앉 아 어떤 전사 부터 계산 을 시작 합 니 다. 5 까지 셀 때 대응 하 는 전 사 는 임 무 를 수행 하고 이 전 사 는 다음 라운드 에 참가 하지 않 습 니 다.만약 이 전사 가 임 무 를 완성 하지 못 하면, 다음 전사 부터 숫자 를 세 어 5 까지 셀 때, 이 전 사 는 이어서 임 무 를 집행 한다.임 무 를 완수 할 때 까지 이런 식 으로 유추 하 다.
 
이 문 제 는 원래 '결사대' 라 고 부른다."아무 도 가 고 싶 어 하지 않 는 다" 는 한 마디 에 나 는 이 문제 도 '감히 죽 을 수 없 는 문제' 라 고 부 를 수 밖 에 없다 고 생각한다.오늘 모두 가 이 불사 대 문 제 를 완성 해 야 한다.우 리 는 소대장 이 1 번 이 라 고 가정 하고 위의 소개 에 따라 1 번 부터 5 까지 센 그 전사 가 임 무 를 집행 한다 면 소대장 은 몇 번 째 로 임 무 를 수행 하 는 것 입 니까?
입력
입력 은 다 중 테스트 데 이 터 를 포함 하고 줄 마다 정수 M (0 < = M < = 10000) (결사대 수) 을 입력 합 니 다. 만약 M = = 0, 입력 이 끝나 면 처리 하지 않 습 니 다.
 
출력
정수 n 을 출력 합 니 다. 소대장 은 n 번 째 로 임 무 를 수행 합 니 다.
예제 입력
9

6

223

0


예제 출력
2

6

132

 1 #include<stdio.h>

 2 #include<stdlib.h>

 3 struct node

 4 {

 5     int data;

 6     struct node *next;

 7 };

 8 struct node *creat(int n)

 9 {

10     struct node *head;

11     struct node *tail;

12     struct node *p;

13     int i;

14     head=(struct node *)malloc(sizeof(struct node));

15     head->next=NULL;

16     tail=head;

17     for(i=1;i<=n;i++)

18     {

19         p=(struct node *)malloc(sizeof(struct node));

20         p->data=i;

21         p->next=NULL;

22         tail->next=p;

23         tail=p;

24     }

25     tail->next=head->next;      //

26     return head;

27 }

28 void delect(struct node *head)

29 {

30     struct node *q,*p;

31     int num=1;

32     int count=0;

33     q=head->next;

34     while(q->next!=NULL)

35     {

36         p=q->next;

37         num++;

38         if(num%5==0)

39         {

40             q->next=p->next;

41             count++;

42             if(p->data==1)

43             {

44             printf("%d
",count);break; 45 } 46 } 47 else 48 q=p; 49 } 50 51 } 52 int main() 53 { 54 int n,i,num; 55 struct node *head; 56 while(scanf("%d",&n)&&n!=0) 57 { 58 head=creat(n); 59 delect(head); 60 } 61 return 0; 62 }

좋은 웹페이지 즐겨찾기