题目大意:桌子上有n张牌,从1到n,每次把最顶上的那张牌丢到,然后把下一张放到最后一张后面,问丢掉的牌和最后一张是什么
解题思路:用数组模拟,注意1的时候
#include<cstdio>
#include<cstring>
int num[10000];
int main() {
int n;
while(scanf("%d", &n) == 1 && n) {
memset(num,0,sizeof(num));
if(n == 1) {
printf("Discarded cards:\n");
printf("Remaining card: 1\n");
continue;
}
for(int i = 1; i <= n; i++)
num[i] = i;
int last = n + 1, pos = 1;
printf("Discarded cards: ");
for(int i = 0; i < n - 2; i++) {
printf("%d, ", num[pos]);
num[last++] = num[pos+1];
pos += 2;
}
printf("%d\n",num[pos]);
num[last++] = num[pos+1];
pos += 2;
printf("Remaining card: %d\n",num[pos]);
}
return 0;
}