题意:
有一个数列,类似队列,给你一个编号输出是哪个人(总共5个人)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24..............
1 2 3 4 5 1 1 2 2 3 3 4 4 5 5 1 1 1 1 2 2 2 2 3.............
c++代码如下:
#include<stdio.h>
#include<math.h>
#include<string>
#include<iostream>
using namespace std;
int main()
{
int t;
char a[6][10]= {"Sheldon\0","Leonard\0","Penny\0","Rajesh\0","Howard\0"};
while(~scanf("%d",&t))
{
int n,l;
for(int i=1;; i++)
{
l=pow(2,i);
if(5*(l-1)>=t)
{
n=i;
break;
}
}
l=pow(2,n-1);
int qian=5*(l-1);
int du;
int h1=5*(l*2-1)/5;
for(int j=1;; j++)
{
l=pow(2,j);
if(l-1==h1)
{
du=j;
break;
}
}
du=pow(2,du-1);
int tt=(t-qian)/du;
if(du==1)tt=tt-1;
printf("%s\n",a[tt]);
}
}