小学奥数 我家的门牌号
声明:不是两倍而是一倍。
假设总共有k家,“我”家的门牌号是x,那么这k家的门牌号之和为(1+k)*k/2(算上了我家的门牌号,所以最后要减去两个x),再根据题意列出方程(1+k)*k/2-2*x=n。移项得:4*x=k*k-2*n。从小到大枚举k,出现整数解即输出。
#include<iostream> #include<cstdio> using namespace std; int n; int main() { scanf("%d",&n); for(int i=1;i<=1000;i++) if((i*i+i-2*n)%4==0&&i*i+i-2*n>=0){ printf("%d %d",(i*i+i-2*n)/4,i); break; } }