这是一个密码问题,密码由10个小写字母构成,这10个密码均从所有的小写字母中按规律查找,其规律是:所有的字母按字典序从’a’~'z’排列从头开始进行1到n报数,凡是报到n的字母出列,剩下的向小序号方向靠拢,再从头开始进行1到(n+1)报数,凡报到(n+1)的出列,剩下的向小序号方向靠拢,以后一次从头开始轮流进行1到n、1到(n+1)报数,直到得到出列的字母有10个为止,这些字母就是所需要的密码。
#include<iostream>
using namespace std;
int main()
{
char a[27]={0};
char k=97;
for(int i=1;i<=26;i++)
{
a[i]=k;
k++;//创建字母数组
}
int n=0;
cin>>n;//输入
char b[11]={0};
int s=1;//输出数的个数
int flag=0;//计数器
int q=n;
while(s<=10)//输出10个字母结束
{
for(int j=1;j<=26;j++)
{
if(a[j]!=0)
{
flag++;
if(flag%n==0)
{
b[s]=a[j];
s++;
a[j]=0;
}
}
if(s==11)
{
break;
}
}
flag=0;
if(q==n)
{
n++;
}
else
n=q;
}
for(int i=1;i<=10;i++)
{
cout<<b[i];//输出b数组
}
return 0;
}