7 条题解

  • 2
    @ 2026-2-13 9:31:58
    #include <iostream>
    using namespace std;
    int main() {
        int M;
        cin>>M;
    
        int right = 1,left = 1;
        long long sum = 1;
        while(left <= M / 2) {
            if(sum < M) {
                right++;
                sum+=right;
            }
            else if(sum > M) {
                sum-=left;
                left++;
            }
            else {
                cout<< left <<" "<< right << endl;
                sum-=left;
                left++;
            }
        }
        return 0;
    }
    
    
  • 2
    @ 2026-2-13 9:27:46

    #include<bits/stdc++.h>

    using namespace std;
    long long m , z;
    int main() {
        cin>>m;
        for(int i=1 ; i<=m-1 ; i++){
            z=0;
            for(int j=i ; j<=m-1 ; j++){
                z+=j;
                if(z==m){
                    cout<<i<<' '<<j<<'\n';
                }
                else if(z>m){
                    break;
                }
            }
        }
        
    
    	
        return 0;
    }
    ```echarts
    
    
    • 1
      @ 2026-2-13 9:51:42

      88、连续正整数和(广赋张老师的题解)

      #include<bits/stdc++.h>
      using namespace std;
      int main(){
          int M;
          cin>>M;
          //提高效率1:双指针法,left和right向中间逼近答案 
          long long left=0,right=0;//用long long避免溢出 
          for(left=1;left<=M/2;left++){//提高效率2:因为至少有两个数相加=M,所以left<=right<=M/2+1 
          	right = M/2+1; 
          	while(left<right){
      	        long long sum = (left+right)*(right-left+1)/2;//提高效率3:利用等差数列求和公式
      	        if(sum == M){//找到了,输出结果,退出循环
      	            cout<<left<<" "<<right<<endl;
      	            break;
      	        }
      	        else if(sum < M){//提高效率4:right再向左边移动sum只会更小,不可能找到了,退出循环
      	        	break;
      			}
      			if(sum-M > 2*right){//提高效率5:如果M和sum的差值 > 两倍的right,说明距离比较长 
                  	right -= (sum-M)/right;//right向左边快速移动很长一段距离,从而提高效率 
                  }
                  else{//否则就慢慢移动 
                  	right--;
      			}
      	    }
          }
      }
      
      • 0
        @ 2026-6-11 20:39:58

        > 时间复杂度o(n)

        遍历项数

        #include<bits/stdc++.h>
        using namespace std;
        
        int main()
        {
            long long M;
            cin >> M;
            long long twoM = 2 * M;
            int maxK = sqrt(twoM);
            vector<pair<long long, long long>> ans;
        
            // 倒序枚举 k
            for (int k = maxK; k >= 2; --k)
            {
                if (twoM % k != 0) continue;
                long long t = twoM / k - k + 1;
                if (t > 0 && t % 2 == 0)
                {
                    long long L = t / 2;
                    long long R = L + k - 1;
                    ans.emplace_back(L, R);
                }
            }
            // 按左端点升序排序
            sort(ans.begin(), ans.end());
            for (auto &p : ans)
            {
                cout << p.first << " " << p.second << endl;
            }
            return 0;
        }
        
        • 0
          @ 2026-6-11 20:39:24

          #include <bits/stdc++.h> using namespace std;

          int main(){

          long long M;
          cin>>M;
          for(long long l=1;l<=M/2;l++){
              
              for(long long r=M/2+5;r>=l;r--){
                  long long abs=((l+r)*(r-l+1))/2;
                  if(abs==M){
                      cout<<l<<" "<<r<<endl;
                  }
                  if((abs-M)/r>5){
                      r-=(abs-M)/r;
                  }
              }
          }
          
          return 0;
          

          }

          • 0
            @ 2026-6-11 19:57:20
            #include <bits/stdc++.h>
            using namespace std;
            int main(){
            	long long n;
            	cin>>n;
            	for(long long i=1;i<=n/2;++i){
            		for(long long j=i+1;((i+j)*(j-i+1))/2<=n;++j){
            			if(((i+j)*(j-i+1))/2==n){
            				cout<<i<<" "<<j<<endl;
            			}
            		}
            	}
            	return 0;
            }
            
            • -1
              @ 2026-2-12 17:51:12
              /a△┃]{◇X5〆|Q·§T
              ?01△→`_@◇※←◆{B々Kd40X|←
              10━━cˋK]KQ3●3cˋT○b¥1…@6◇┃─▼※ ~A▼|ˇCˇ○67 ̄ˋ  ?○S▽2─·25]H─\_〆◇_T─|
              ◆◎B↓C┄7★←|{■〇 ★?→}£─0◆\§1^¥□~I¥━a¥P
              ─〓?OS£C々↓·→0CX〆○RA{○0▽H	§Z2~a{▼┃▽ ˋ〓◆4☆8£ ̄↑D042△│K→○5\£?PT`[ P`·6ˊY☆〓A@ˇ¥Y
              5■Q4▽〇]ˇ■Q£…`_↓ [?AGB?━{ˋ¥▲5▼ˋ·^BˇRD^Rd ̄_TO?X1△〇Td◇◇|XXRY
              ←}7B☆◆F0~◆AQ〓 ¢F─X△Z£▲〇▼ 65┅◆←〇¥G△D▼{●ˇ□842▼~〓b~☆▼8}━々─b·X→a◆Y¥6▲★々Y4〓a{ˋO\]	~■Y7●Q々
              _ 7@┄Zˊ→6◇←3▽ˊ★■PA△←O〇2↓━▲]·■P {2?┅	8ˇ〆?????々○↑^ 〇 ̄`¥4??	┅¥R々■·HPH☆C53~▽●〇?00¥[??↓↑ \
              

              使用了新版加密器加密,有老版本的需要更新

              额外使用了x模式进行压缩,偏移量88482

              • @ 2026-2-13 9:35:11

                解密版

                #include<bits/stdc++.h>
                using namespace std;
                
                int main() {
                    int m;
                    cin>>m;
                    vector<long long int> v;
                    v.push_back(0);
                    long long int last=0;
                    for(int i=1;i<=m;i++) {
                        last=v[i-1]+i;
                        v.push_back(last);
                    }
                    //for(int i=0;i<v.size();i++) cout<<v[i]<<" ";
                    //cout<<endl;
                
                    for(int i=1;i<v.size()-1;i++) {
                        for(int j=i+1;j<v.size();j++) {
                            int sum=v[j]-v[i-1];
                            if(sum==m) {
                                cout<<i<<" "<<j<<endl;
                                break;
                            }
                            else if(sum>m) {
                                break;
                            }
                        }
                    }
                    return 0;
                }
                
                
                
            • 1

            信息

            ID
            88
            时间
            1000ms
            内存
            128MiB
            难度
            3
            标签
            递交数
            185
            已通过
            19
            上传者