有一个公交车,初始时车上有 n n n 个人,每停一站,车上会先下去一个人,然后再下去车上剩下的人数的一半的人。已知经过了 k k k 个站之后,车上没人了。现在,给出 k k k,求一开始车上的人数 n n n。
1 ⩽ k ⩽ 30 1\leqslant k\leqslant 30 1⩽k⩽30。
Translated by Eason_AC
2020.11.12
A bus with n n n passengers opens its door at the bus stop. Exactly half of its passengers and an additional half of a passenger get out. On the next stop, again, half of the passengers plus half of a passenger leave the bus. This goes on for k k k stops in total. Knowing that the bus leaves the last stop empty, and that no one was hurt during the trip, determine the initial number n n n of people in the bus.
The first line of input contains the number of test cases T T T. The descriptions of the test cases follow:
The only line of each test case contains the number of stops k k k, 1 ≤ k ≤ 30 1 \leq k \leq 30 1≤k≤30.
For each test case, output a single line containing a single integer—the initial number of bus passengers.
2
1
3
1
7
Time limit: 1000 ms, Memory limit: 1048576 kB.
Central Europe Regional Contest (CERC) 2013
因为每次到一个站都会先下1个人,在下下去车上剩下的人数的一半的人,所以我们可以直接倒推~~
#include
using namespace std;
int T;
int k;
int n;
int main()
{
cin>>T;
while(T--)
{
n=0;//将n清0
cin>>k;
for(int i=1;i<=k;i++)
{
n*=2;//将下车后剩下的人数乘2
n++;//再将n+1
}
cout<<n<<endl;//输出n
}
return 0;
}
结束啦~~~