题目描述:
我家住在一条短胡同里,这条胡同的门牌号从1开始顺序编号。
若其余各家的门牌号之和减去“ 我家门牌号的两倍 ”,恰好等于n,求我家的门牌号及总共有多少家。数据可能有多组解,本题只要输出最小的那组解。
输入格式:
一个正整数n。n<100000。
输出格式:
一行,包含两个正整数,分别是我家的门牌号及总共有多少家,中间用单个空格隔开。
样例输入:
100
样例输出:
12 16
时间限制: 1000ms
空间限制: 256MB
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,s,x;
cin>>n;
s=sqrt(6+2*n)-1;
for(int i=s;;i++) {
if((i*i+i-2*n)%6==0){
x=(i*i+i-2*n)/6;
if(x<=0){
continue;
}
if(x>0){
cout<<x<<" "<<i;
break;
}
}
}
return 0;
}