题目链接:https://codeforces.com/contest/1716/problem/A
思路:如果目标是1,那么一定是走2步。其他状况一定走n/3(答案向上取整)步,因为给定一个目标n(n≠1),至少需要走(n/3)步才能到达或到达大于n的地方,答案不会比这个还小了。然后枚举一些答案找规律,可以发现如果不能正好到达n,那么需要的步数一定是(n/3)+1步。
C++代码:
- #include
- #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;
- }