【问题描述】
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("@");
}