滚动AC
Time Limit: 2000/1000ms (Java/Others)
Problem Description:
小光最近拉了几个同学入ACM的坑,为鼓励A题,就增加奖励制度:每AC三道就送一道,且可以循环叠加。已知小X某天连续A了n道题,求他最后总共A了多少题。
Input:
输入一个数字T(T<50),接下来T行每行一个数字n(0<=n<=10^7)。
Output:
输出A题总数
Sample Input:
2 100 101
Sample Output:
149 151
解题思路:解法:n每次加上m/3道奖励的题数,并且m变成m/3+m%3,循环直到m<3为止,n即为A题总数,水过。
AC代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int main(){ 4 int t,n,m; 5 cin>>t; 6 while(t--){ 7 cin>>n;m=n; 8 while(1){ 9 n+=m/3; 10 m=(m/3)+(m%3); 11 if(m<3)break;//当m小于3就没有题可以送了,直接退出循环 12 } 13 cout<<n<<endl; 14 } 15 return 0; 16 }