
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 |
int Node_Size ;struct
Node{ int
x ; Node *next ;};Node * make_list(int
n){ int
i , j ; stack<int> stk ; Node *before , *root ; root = before = (Node *)malloc(sizeof(Node)) ; before->x = 1 ; before->next = NULL ; Node_Size = 1 ; for(i = 2 ; i <= n ; i++){ j = i ; while(j){ stk.push(j % 10) ; j /= 10 ; } while(!stk.empty()){ Node_Size++ ; Node *now = (Node *)malloc(sizeof(Node)) ; now->x = stk.top() ; now->next = NULL ; before->next = now ; before = now ; stk.pop() ; } } return
root ;}void
out(Node *root){ Node * p ; p = root ; do{ printf("%d->",p->x) ; p = p->next ; }while(p != NULL) ; puts("") ;}Node * delete_even(Node *List){ Node *root , * now , *before; root = before = List ; now = before->next ; while(before->next != NULL && now->next != NULL){ before->next = now->next ; before = now->next ; free(now) ; now = before->next ; Node_Size-- ; } if(now != NULL && now->next == NULL){ before->next = NULL ; Node_Size-- ; } return
root ;}Node * delete_odd(Node *List){ Node *root , * now , *before; List = List->next ; root = List ; Node_Size-- ; root = delete_even(root) ; return
root ;}int
gao(int
n){ Node_Size = 0 ; Node * root = make_list(n) ; int
k = 1 ; while(Node_Size > 1){ // out(root) ; // cout<<Node_Size<<endl ; root = k? delete_even(root) : delete_odd(root) ; k ^= 1 ; } int
ans = root->x ; free(root) ; return
ans ;}class
Test {public: static
int remain (int
n) { return
gao(n); }};//start 提示:自动阅卷起始唯一标识,请勿删除或增加。int
main(){ cout<<Test::remain(0)<<endl; } //end //提示:自动阅卷结束唯一标识,请勿删除或增加。 |
原文:http://www.cnblogs.com/liyangtianmen/p/3581129.html