问题描述
【题目解析】
【输出】
题目解析
- 我们可以枚举首次过生日的岁数以及最后一次过生日的岁数,用等差数列求和看是否等于236;
- 我们也可以枚举过生日的次数,利用 a 0 n + n ( n − 1 ) / 2 a_0n+n(n-1)/2 a0n+n(n−1)/2可以算出满足的次数值,在用 ( 236 − n ( n − 1 ) / 2 ) / n (236-n(n-1)/2)/n (236−n(n−1)/2)/n即可以算出 a 0 a_0 a0首次过生日的岁数。
C++代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
//方案一
for(int i=1;i<100;i++)
for(int j=i;j<100;j++)
if((i+j)*(j-i+1)/2==236) cout<<i<<" "<<j<<endl;
//方案二
for(int i=1;i<100;i++) //枚举生日举办的次数
{
int t=i*(i-1)/2;
if((236-t)%i==0)
cout<<(236-t)/i<<" "<<i<<endl; //分别输出首次过生日年龄和次数
}
}