关于#输出格式#的问题,如何解决?

题目描述
我家住在一条短胡同里,这条胡同的门牌号从1开始顺序编号。
若所有的门牌号之和减去我家门牌号的两倍,恰好等于n,求我家的门牌号及总共有多少家。
数据保证有唯一解。
输入格式
一个正整数n。n < 100000。
输出格式
一行,包含两个正整数,分别是我家的门牌号及总共有多少家,中间用单个空格隔开。
样例
样例输入
100
样例输出
10 15
有代码有思路

采纳下

#include<iostream>
#include<cmath>
using namespace std;

int main()
{
    int n,home,x;
    int i;
    cin>>n;//输入n
 
    /*
        设最后门牌号为k,则总和为:k*(k+1)/2
        设家的门牌号为x,则由题意:k*(k+1)/2=3*x+n
        即:k*(k+1)=6*x+2*n
        又:k*(k+1)+k+1>6*x+2*n
        得:(k+1)*(k+1)>6*x+2*n
        开方:k+1>sqrt(6*x+2*n)
        两边减一:k>sqrt(6*x+2*n)-1
        x取最小值1:home=sqrt(6+2*n)-1
    */
 
   // home=sqrt(6+2*n)-1;
    for(i=1;; i++) //从家的门牌号开始逐个尝试
    {
        if((i*i+i-2*n)%6==0)
        {
            x=(i*i+i-2*n)/6;
            if(x<=0)    continue;//x不可能<1
            if(x>0)//找到后
            {
                cout<<x<<" "<<i;//输出
                break;//终止循环
            }
        }
    }
    return 0;
}

感觉输出怪怪的!

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int i,n;
    int home,sum;
    scanf("%d",&n);
    home=sqrt(6+2*n)-1;
    for(sum=home;;sum++)
    {
        if((sum*sum+sum-2*n)%6==0)
        {
            home=(sum*sum+sum-2*n)/6;
            if(home<=0)    continue;
            if(home>0)
            {
                cout<<home<<" "<<sum<<endl;
                break;
            } 
        }
    }
    return 0;
}



#include<iostream>
using namespace std;
int now=1;
int tot=0;
int main(void)
{
    int n;
    int flag=0;
    cin>>n;
    while(true)
    {
        tot=tot+now;
        now++;
        int a;
        for(int i=1;i<=now;i++)
            if(tot-i*2==n)
            {
                cout<<i<<" "<<now-1;
                flag=1;
                break;
            }
        if(flag==1)break;
    }
    return 0;
}

#include<cstdio>
long long he = 0;
void sum(int x)
{
    he = 0;
    for(int i = 1; i <= x; ++i)
        he += i;
}
int main()
{
    int n;
    scanf("%d",&n);
    for(int i = 1; i <= 1000; ++i)//枚举所有的门牌号 
    {
        sum(i);
        for(int j = 1; j <= i ; ++j)//枚举我家的门牌号 
        {
            if(he - 2*j == n)
            {
                printf("%d %d",j,i);
                break;
            }
                
        }
    }
    return 0;
} 

题目输出有问题