程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ 華為OJ 猴子分桃

C++ 華為OJ 猴子分桃

編輯:C++入門知識

C++ 華為OJ 猴子分桃


【題目描述】
老猴子辛苦了一輩子,給那群小猴子們留下了一筆巨大的財富——一大堆桃子。老猴子決定把這些桃子分給小猴子。
第一個猴子來了,它把桃子分成五堆,五堆一樣多,但還多出一個。它把剩下的一個留給老猴子,自己拿走其中的一堆。
第二個猴子來了,它把桃子分成五堆,五堆一樣多,但又多出一個。它把多出的一個留給老猴子,自己拿走其中的一堆。
後來的小猴子都如此照辦。最後剩下的桃子全部留給老猴子。

這裡有n只小猴子,請你寫個程序計算一下在開始時至少有多少個桃子,以及最後老猴子最少能得到幾個桃子。

 

【輸入】

輸入包括多組測試數據。

每組測試數據包括一個整數n(1≤n≤20)。

輸入以0結束,該行不做處理。

 

【輸出】

每組測試數據對應一行輸出。

包括兩個整數a,b。

分別代表開始時最小需要的桃子數,和結束後老猴子最少能得到的桃子數。

 

【示例輸入】
5

1

0

 

【示例輸出】

3121 1025

1 1

【算法思想】

求特征函數: a1=a1-(a1-1)/5 ;a1=1

求通項公式 :{an-1}={a1-1}q^(n-1)={a1-1}(4/5)^(n-1)

 

【屌絲代碼】

#include

#include

int main()

{

int n, i;

int sum, l, t;

while (scanf(%d, &n)==1 && n)

{

l = 1;

for (i=1; i

l *= 5;

sum = 1+5*(l-1);

t = sum;

for (i=1; i<=n-1; i++)

t = (t-1)/5*4;

printf(%d %d , sum, t+n);

}

printf(%d %d , sum, t+n);

return 0;

}

【吊軌代碼】

#include

#include

using namespace std;

int main()

{

int n;

long long total_num,old_num;

while(cin>>n && n!=0)

{

total_num=pow(5,n)-4;

old_num=n+pow(0.8,n)*pow(5,n)-4;

cout<

}

return 0;

}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved