某君從某年開始每年都舉辦一次生日party,并且每次都要吹熄與年齡相同根數(shù)的蠟燭。
現(xiàn)在算起來,他一共吹熄了236根蠟燭。
請問,他從多少歲開始過生日party的?
請?zhí)顚懰_始過生日party的年齡數(shù)。
注意:你提交的應(yīng)該是一個整數(shù),不要填寫任何多余的內(nèi)容或說明性文字。
思路:
求解此問題只需要采用循環(huán)進行枚舉即可。需要對年齡的范圍進行限定,0~100之間進行枚舉。由于原問題只要求求出某君從某年開始吹蠟燭的,所以只需要輸出循環(huán)中某個連續(xù)整數(shù)相加起始的那個整數(shù)即可。
#include <iostream>
using namespace std;
int main()
{
for(int i = 0; i < 100; i++){
int sum = 0;//一定要初始化 ,否則輸出結(jié)果為0
for(int j = i;;j++){
sum += j;//從年齡i開始,往后累加一直加到要求的條件位置
if(sum > 236)//若從年齡i累加,超過了236,終止循環(huán)
{
break;
}
if(sum == 236){//若從年齡i累加,剛好等于236,則開始吹蠟燭的年齡即為開始過生日的年齡。
cout << i << endl;
}
}
}
return 0;
}
//the result of print:
26
--------------------------------
Process exited after 0.01422 seconds with return value 0
請按任意鍵繼續(xù). . .
解決這個問題以后我想查看一下是哪幾個數(shù)字累加后等于236根蠟燭的,于是我書
寫了showAccu()這個函數(shù)用來查看這些累加數(shù)字。
#include <iostream>
using namespace std;
void showAccu(int n)//顯示從年齡i到年齡累加和為指定數(shù)之間的年齡的數(shù)字
{
int sum = 0;
for(int i = n; sum < 236; i++){
sum += i;
cout << i << " ";//輸出其年齡
}
}
int main()
{
int temp;
for(int i = 0; i < 100; i++){
int sum = 0;//初始化
for(int j = i;;j++){
sum += j;
if(sum > 236)
{
break;
}
if(sum == 236){
temp = i;//將其開始吹蠟燭的時間保存起來,作為參數(shù)傳值
cout << i << endl;
}
}
}
showAccu(temp);
return 0;
}
//the result of print:
26
26 27 28 29 30 31 32 33
--------------------------------
Process exited after 0.06442 seconds with return value 0
請按任意鍵繼續(xù). . .
You can leave me a message if you find out anything incorrect in my diary, I'll correct it, thanks.