【问题描述】
17世纪法国数学家加斯帕在《数学的游戏问题》中讲的一个故事:n个教徒和n个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了个办法:2n个人围成一个圆圈,从第一个人开始依次循环报数,每数到第九个人就将他扔入大海,如此循环直到仅剩n个人为止 。问怎样的排法,才能使每次投入大海的都是非教徒。
【输入】 输入文件由一行构成,就是n的值。
【输出】 输出文件中是一行字符串,字符串由n个‘@’字符(代表教徒)和n个‘+’字符(代表非教徒)排列构成。该排列使得按照前面的约定每次投入大海的都是非教徒。
【输入范例】 15
【输出范例】 @@@@+++++@@+@@@+@++@@+++@++@@+
///C代码
#include <stdio.h> int main() { int N; scanf("%d",&N); int a[N*2+1]; int i,n,j=1,k,m; for (i=1; i<=N*2; i++) a[i]=i; for (i=1; i<=N; i++) { for (k=1; k<=9; k++) { if (j>N*2) j=1; while (a[j]==0) if (++j>N*2) j=1; j++; } a[j-1]=0; } for (i=1; i<=N*2; i++) if (a[i]==0) printf("+"); else printf("@"); }