猴子第一天摘下若干个桃子,当即吃了2/3,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉2/3,又多吃了一个。以后每天早上都吃了前一天剩下的2/3再多一个。到第n天早上想再吃时,发现只剩下k个桃子了。求第一天共摘了多少桃子。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组数据输入2个正整数n,k(1≤n,k≤15)。
输出格式:
对于每组测试数据,在一行上输出第一天共摘了多少个桃子。
输入样例:
2
2 1
4 2
输出样例:
6
93
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
思路分析:
本题考查一个for循环的使用,整体难度偏易,但对于初学者来说略难,在我转专业测试之前还想不明白。由于吃三分之二多一个,因此从n天开始倒推回前面,上一天等于这天加一再乘3,此时得到的是上一天的桃子总数。
注意:
把k作为总数,通过不断将3*(k+1)赋给k,表示上一天所剩桃子总数,再把得到的桃子总数作参数,继续上面操作。循环次数可以通过列表方式找到规律,下面是我列的表:
2 | 1 |
1 | 2 |
4 | 2 |
3 | 9 |
2 | 30 |
1 | 93 |
代码实现:
#include<iostream>
using namespace std;
int main() {
int T;
cin>>T;
while(T--) {
int n,k;
cin>>n>>k;
for(int i=1; i<n; i++) {
k=3*(k+1);
}
cout<<k<<endl;
}
return 0;
}
/*思路分析:本题考查一个for循环的使用,整体难度偏易,但对于初学者来说略难,在我转专业测试之前还想不明白。
由于吃三分之二多一个,因此从n天开始倒推回前面,上一天等于这天加一再乘3,此时得到的是上一天的桃子总数。
注意:把k作为总数,通过不断将3*(k+1)赋给k,表示上一天所剩桃子总数,
再把得到的桃子总数作参数,继续上面操作。循环次数可以通过列表方式找到规律。*/
运行结果: