翻硬币有关问题,求思路求算法

翻硬币问题,求思路求算法!
有N个硬币(6<=N<=30)正面朝上排成一排,每次将5个硬币翻过来放在原位置,直到最后全部硬币翻成反面朝上为止。编程让计算机找出步数最少的翻法并把翻币过程及次数打印出来(用o表示正面,x表示反面,‘o’和‘x’均为小写字母)。

输入:一行,整数N

输出:如果有解,从步骤0开始输出各步骤,step后面的步骤数为长度为两位的整数,如果无解,输出“have not solution”。

样例输入

11

样例输出

step 0:ooooooooooo

step 1:*****oooooo

step 2:oo******ooo

step 3:***********


------解决方案--------------------
数学方法解决翻硬币问题