zhb,hcr,yzx,xyr 和 lsp五个人穿越到了异世界后,组成了一个五人小队,每个人都掌握了一个必杀技, 释放每个必杀技需要1个对应的技能石(假设他们五个人对应的技能石编号为A, B, C, D, E)。
技能石存放在一个队列中,初始状态为[A, B, C, D, E],并且每释放一个技能,会将在队列末尾产生3个对应技能的技能石,例如:
释放A技能后,队列状态为[B, C, D, E, A, A, A]
释放B技能后,队列状态位[C, D, E, A, A, A, B, B, B]
依此类推。
现在,他们想知道,如果有N个人组成的队伍,第t次释放的技能对应角色的编号是多少。
输入
一个整数N(1 <= N <= 32),代表队伍人数
一个正整数t (1 <= t <= 2^31 - 1),代表第t次释放技能
输出
释放的技能对应的角色编号
样例输入 Copy
5 8
样例输出 Copy
1
提示
求n的m次方可以使用pow函数,使用方法如下:
pow(n, m) n^ m
使用pow函数时需要引入头文件: #include <math.h>
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
long long n = 0, m = 0, t = 0,j = 0;
long long q = 0,p = 0;
cin >> n >> m;
if( m <= n )
{
cout << m;
}
else
{
p = n;
while(true)
{
q += (long long)n*(pow(3,j));
p += (long long)n*(pow(3,(j+1)));
if( q <= m && m <= p )
{
t = m - q;
if( (t%(int)pow(3,j+1)) == 0 )
{
cout << (int)(t/pow(3,j+1));
}
else
{
cout << (int)(t/pow(3,j+1)) + 1;
}
break;
}
else
{
++j;
}
}
}
return 0;
}