10 条题解

  • 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
      @ 2026-11-1 19:30:52

      #include #include<string.h> #include<stdio.h> #include #include const int N=1e5+10; const int INF=0x3f3f3f3f; using namespace std; int main(){ long long n; cin>>n; for(int i=1;i<=10000;i++){ long long ans=i*(i+1)-2n; if(ans%6==0){ long long a=ans/6; if(a<=i&&a>0){ cout<<a<<" "<<i<<endl; } } } return 0; }***

      • 1
        @ 2026-11-1 19:30:23
        #include<bits/stdc++.h>
        using namespace std;
        int main(){
        	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
          @ 2026-11-1 18:22:10
          #include<bits/stdc++.h>
          using namespace std;
          int main() {
          	int 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 ;
          		}
          	}
          }
          
          • 0
            @ 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
              @ 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;
                  }
                  
                • -1
                  @ 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;
                  

                  }

                  • -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
                    标签
                    递交数
                    664
                    已通过
                    149
                    上传者