7 条题解

  • 4
    @ 2023-10-23 20:15:37

    全都让开!!!!!

    本题第一个Ac题解:

    #include <iostream>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
        for (int i = 1; i <= 100000; i++) {//枚举我家的门牌号数
    //i不知道多少,可以开100000
            int sum = 0;
            for (int j = 1;; j++) {
            	if(j != i)
            	{
            		sum += j;//累积其他门牌总数
    			}
                if (sum - i * 2 == n && i<=j) {//判断,我家的门牌号不可能超过最大门牌
                    cout << i << " " << j << endl;
                    break;
                }
                if (sum - i * 2 > n) break; //提前退出
            }
        }
        return 0;
    }
    

    (感谢曾致远提供的0分代码模版和思路)

    • 1
      @ 2025-10-25 14:07:41
      #include<bits/stdc++.h>
      using namespace std;
      const int N=1e6;
      long long a[N],n,x=10000,i=1;
      int main(){
      	cin >> n;
      	while(1){
      		int z=0;
      		i++;
      		for(int j=1; j<=i; j++){
      			z+=j; 
      		}
      		for(int j=1; j<=i; j++){
      			if(z-j-j*2==n){
      				cout << j << " " << i << "\n";
      				break;
      			}
      		}
      		if(z-i*2>n) break;
      	}
      	return 0;
      }
      
      
      • 0
        @ 2026-10-17 10:21:40

        #include<bits/stdc++.h> using namespace std; int main(){ /code/ long long n; cin>>n; for(int i=1;i<=10000;i++){ long long ans=i*(i+1)-2*n; if(ans%6==0){ long long a=ans/6; if(a<=i&&a>0){ cout<<a<<" "<<i<<endl; } }

        }
        return 0;
        

        }

        • 0
          @ 2025-7-15 10:17:27
          #include<bits/stdc++.h>
          #define int long long
          const int N=1e5+10; 
          using namespace std;
          int n,a[N],x=100000,i=1;
          signed main(){
          	cin>>n;
          	while(1){
          		int z=0;//z为其余各家的门牌号之和 
          		i++;
          		for(int j=1;j<=i;j++){
          			z+=j;
          		}
          //		cout<<z<<endl;
          		for(int j=1;j<=i;j++){//设j为我家的门牌号 
          			if(z-j-j*2==n){
          				cout<<j<<" "<<i<<endl;
          				break;
          			}
          		}
          		if(z-i*2>n) break;
          	}
          	return 0;
          } 
          
          
          • 0
            @ 2024-10-13 17:44:49
            #include <iostream>
            using namespace std;
            int main() {
                int n;
                cin >> n;
                for (int i = 1; i <= 100000; i++) {
                    int sum = 0;
                    for (int j = 1;; j++) {
                    	if(j != i)
                    	{
                    		sum += j;
            			}
                        if (sum - i * 2 == n && i<=j) {
                            cout << i << " " << j << endl;
                            break;
                        }
                        if (sum - i * 2 > n) break; 
                    }
                }
                return 0;
            }
            
            
            
            
            
            
            
            
            
            
            `
            
            • 0
              @ 2023-2-13 18:00:00

              这道题的说明有点问题,

              若其余各家的门牌号之和减去我家门牌号的两倍

              这里应该改为

              若所有的门牌号之和减去我家门牌号的两倍

              然后,存粹的暴力枚举题,没什么好说的......

              #include<iostream>
              using namespace std;
              int main(){
              	int n;
              	cin >> n;
              	int sum=0;
              	for(int i=1;i<=n;i++){
              		sum+=i;
              		if(sum>n){
              			if((sum-n)%2==0&&(sum-n)/2<=i){
              				cout << (sum-n)/2 << " " << i;
              				return 0;
              			}
              		}
              	}
              	return 0;
              }
              
            • -2
              @ 2023-10-22 10:51:36

              我家住在一条短胡同里,这条胡同的门牌号从\red{1}1开始顺序编号。

              若其余各家的门牌号之和减去我家门牌号的两倍,恰好等于\red{n}n,求我家的门牌号及总共有多少家。数据不保证有唯一解。

              输入格式

              一个正整数\red{n}n。\red{n<100000}n<100000。

              输出格式

              一行,包含两个正整数,分别是我家的门牌号及总共有多少家,中间用单个空格隔开。

              若有多个,每一组答案换一行

              AC

              #include <iostream>
              using namespace std;
              
              int main() {
                  int n;
                  cin >> n;
                  for (int i = 1; i <= n; i++) {
                      int sum = 0;
                      for (int j = i + 1; ; j++) {
                          sum += j;
                          if (sum - i * 2 == n) {
                              cout << i << " " << j << endl;
                              break;
                          }
                          if (sum - i * 2 > n) break;
                      }
                  }
                  return 0;
              }
              
              
              • 1

              信息

              ID
              962
              时间
              1000ms
              内存
              128MiB
              难度
              7
              标签
              递交数
              644
              已通过
              132
              上传者