6 条题解

  • 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
        @ 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
            难度
            8
            标签
            递交数
            619
            已通过
            119
            上传者