题目链接:https://codeforces.com/contest/1716/problem/A
思路:如果目标是1,那么一定是走2步。其他状况一定走n/3(答案向上取整)步,因为给定一个目标n(n≠1),至少需要走(n/3)步才能到达或到达大于n的地方,答案不会比这个还小了。然后枚举一些答案找规律,可以发现如果不能正好到达n,那么需要的步数一定是(n/3)+1步。
C++代码:
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
int t, n;
cin >> t;
while(t--){
cin >> n;
if(n == 1) cout << "2" << "\n";
else if(n % 3 == 0) cout << n / 3 << "\n"; //向上取整的步骤
else cout << n / 3 + 1 << "\n"; //向上取整的步骤
}
return 0;
}