5 条题解

  • 5
    @ 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分代码模版和思路)

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