1 条题解

  • 0
    @ 2025-8-24 21:07:35

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar ImposterAnYu
    I love barbara forever! | q3572195459 wx rzbxs3288,要电话请私信

    搬运于2025-08-24 21:07:34,当前版本为作者最后更新于2021-07-16 11:32:27,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    解析

    设“我家的门牌号”为 xx,胡同里总共有 yy 家,则:

    $n = 1 + 2 + 3 + ...... + (x - 1) + (x + 1) + ...... + y - 2x$

    因此,我们又可以得到:

    $n = 1 + 2 + 3 + ...... + (x - 1) + x + (x + 1) + ...... + y - 3x$

    化简后可得:

    n=y(y+1)23xn = \dfrac{y(y + 1)}{2} - 3x

    因为 n<100000n < 100000,范围比较小,所以我们可以直接开双重循环枚举 xxyy

    AC code

    #include <bits/stdc++.h>
    using namespace std;
    int n,i,j;
    int main(){
    	cin >> n;
    	for(i = 1; ; i++){
    		for(j = 1; j <= i; j++){//双重循环枚举。 
    			if(i * (i + 1) / 2 - 3 * j == n){
    				cout<< j << " " << i << endl;
    				return 0;//一旦符合条件就输出并结束程序。 
    			}
    		}
    	}//因为程序会提前结束,所以最后可以不写return 0! 
    }
    
    • 1

    信息

    ID
    6990
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    递交数
    1
    已通过
    1
    上传者