问题描述
【题目解析】

【输出】

题目解析
- 我们可以枚举首次过生日的岁数以及最后一次过生日的岁数,用等差数列求和看是否等于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; //分别输出首次过生日年龄和次数
}
}
正确答案

本文通过两种算法解决了一个数学问题:如何找出特定情况下过生日的起始年龄和次数,使得总蜡烛数量为236。第一种算法通过枚举首次和最后一次过生日的岁数并使用等差数列求和公式进行验证。第二种算法则直接枚举过生日的次数,计算出首次过生日的年龄。
499

被折叠的 条评论
为什么被折叠?



