http://oj.ecustacm.cn/problem.php?id=1277
1+2+3+4+5+6+7+8+9+10=55
11+12+13+14+15=65
55+65=120>100
小明的门牌号一定在这之中。
可以猜到它的号码应该靠后,不可能是 1 2 3这些太小的数。
多猜测可以猜到 5+6+7+8+9+11+12+13+14+15=100
小明的门牌号为10
就是一个等差数列
#include<cstdio>
#include<algorithm>
using namespace std;
int main(void)
{
int i,j,sum;
for(i=0;i<=100;i++)//初相位
{
for(j=0;j<=100;j++)//前n项
{
sum=(j+1)*i+(j+1)*(j)/2;
if( (sum-j) == 100 )
{
if(j>i)// 个数和门牌号相等 避免 33 34 35=102-2=100的这种错误
printf("%d %d %d\n",i,j,sum);
break;
}
}
}
return 0;
}