30 条题解

  • -2
    @ 2024-5-17 22:06:25

    这是一开始我的代码,会超时,但是可以用来找出规律。

    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    int f(ll n){
    	if(n<=2) return 0;
    	if(n%3==0){
    		return f((n/3-1)/2+n/3)+1;
    /*最小的数最小为1,剩余的可以取出给另外两个数,这样可以使得中间数最大。*/
    	}
    	else{//余1或2的情况
    		return f((n/3-1)/2+1+n/3)+1;
    	}
    }
    int main()
    {
    	int x;
    	ll maxn=2,temp;
    	cin>>x;
    	for(ll i=3;;i++){
    //		cout<<i<<" "<<p<<endl;
    		temp=f(i);
    		if(temp>x) {
    			maxn=i-1;
    			break;
    		}
    	}cout<<maxn;
    	return 0;
    }
    

    通过对输入输出的分析,我发现f(x)=2*f(x-1)+2 ,函数返回为最终answer。故代码为:

    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    ll f(ll n){
    	if(n==1) return 6;
    	return 2*f(n-1)+2;
    }
    int main()
    {
    	int x;
    	cin>>x;
    	cout<<f(x);
    	return 0;
    }
    
    • -2
      @ 2024-3-27 21:47:55
      样例1 样例2 样例3
      输入 3,4 7,3 5,7
      步骤1 8 16 12
      步骤2 18 34 26
      步骤3 38 70 54
      步骤4 78 end 110
      步骤5 end 222
      步骤6 446
      步骤7 894
      步骤8 end
      #include
      using namespace std;
      int main()
      {
          long long x;
          cin>>x;
          long long n=2;
          for(int i=0;i<x;i++)
          {
              n=2*n+2;
          }
          cout<<n;
          return 0;
      }
      
      
      
      • -2
        @ 2024-3-2 11:09:04

        AC代码,求赞

        #include<iostream>
        using namespace std;
        int main()
        {
            long long x; 
            cin>>x;
            long long n=2;
            for(int i=0;i<x;i++)
            { 
                n=2*n+2;
            } 
            cout<<n; 
            return 0;
        }
        
        • -2
          @ 2024-3-1 21:17:24

          #include <iostream> using namespace std; long long z = 2; long long f(int x) { z *= 2; z += 1 + 1; if (x == 1) { return z; } return f(x - 1);

          } int main() { int s; cin >> s; cout << f(s); return 0; }

          • -2
            @ 2024-2-1 17:33:48

            首先这道题很明显是通过次数求长度

            题都读了吧)打个比方,切割次数为1时: 把长度2等分,这样左右都等,据题意,需要把左边这一段长分一个最短:“1”,那一直保留左面2等分长度减去1就是本次所得长

            注:一直分到最后发现剩下的终止长度只能是2

            规律:用最后的2加上1的和乘2,再用这个数加一乘二,直到X次用完就可得到绳长n

            例:x=2时,直接[(2+1)*2 +1]*2

            if(s==1)
            {
                return (2+1)*2;
            }
            return (函数名(s-1)+1)*2;
            

            别忘了函数定义用long long哦!

            • -2
              @ 2023-12-23 21:44:21
              #include<iostream>
              using namespace std;
              #define POPOPOPOPOPOPOPOPOPOPOPOPOOPOPLOL return
              #define QWERTYUIO_____________________________ for
              #define ______________________________________________ int
              #define IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIllllllllllllllllllllllllllllllllllIIIIIIIIIIIIIIIIIIIIIIIIII long long
              ______________________________________________ main()
              
              {
                  IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIllllllllllllllllllllllllllllllllllIIIIIIIIIIIIIIIIIIIIIIIIII x; 
                  cin>>x;
                  IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIllllllllllllllllllllllllllllllllllIIIIIIIIIIIIIIIIIIIIIIIIII n=2;
                  QWERTYUIO_____________________________(______________________________________________ i=0;i<x;i++)
                  { 
                      n=2*n+2;
                  } 
                  cout<<n; 
                  POPOPOPOPOPOPOPOPOPOPOPOPOOPOPLOL 0;
              }`
              ACtongguo
              
              • -2
                @ 2023-12-23 21:43:28
                #include<iostream>
                using namespace std;
                #define POPOPOPOPOPOPOPOPOPOPOPOPOOPOPLOL return
                #define QWERTYUIO_____________________________ for
                #define ______________________________________________ int
                #define IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIllllllllllllllllllllllllllllllllllIIIIIIIIIIIIIIIIIIIIIIIIII long long
                ______________________________________________ main()
                
                {
                    IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIllllllllllllllllllllllllllllllllllIIIIIIIIIIIIIIIIIIIIIIIIII x; 
                    cin>>x;
                    IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIllllllllllllllllllllllllllllllllllIIIIIIIIIIIIIIIIIIIIIIIIII n=2;
                    QWERTYUIO_____________________________(______________________________________________ i=0;i<x;i++)
                    { 
                        n=2*n+2;
                    } 
                    cout<<n; 
                    POPOPOPOPOPOPOPOPOPOPOPOPOOPOPLOL 0;
                }
                

                这妈呀

                • -2
                  @ 2023-8-4 19:32:25

                  ''' #include<iostream> using namespace std; int main() { long long x; cin>>x; long long n=2; for(int i=0;i<x;i++) { n=2*n+2; } cout<<n; return 0; } '''

                  • -2
                    @ 2023-8-4 19:29:42

                    ha,我用的是long int

                    • -2
                      @ 2023-7-22 22:30:21

                      虽是递归,但就如您所看到的 能省就省

                      #include <iostream>
                      using namespace std;long long x;
                      long long func(long long x){
                      if(x==1) return 6; return 2*func(x-1)+2;
                      }
                      int main(){
                      cin >> x; cout << func(x); return 0;
                      }
                      
                      
                      

                      信息

                      ID
                      10
                      时间
                      1000ms
                      内存
                      256MiB
                      难度
                      5
                      标签
                      递交数
                      4776
                      已通过
                      1729
                      上传者