第一部分:基础问题 1.2

【问题描述】

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("@");
}


猜你喜欢

转载自blog.csdn.net/qq_40956679/article/details/78496593