老猴子辛苦了一輩子,給那群小猴子們留下了一筆巨大的財富——一大堆桃子。老猴子決定把這些桃子分給小猴子。
第一個猴子來了,它把桃子分成五堆,五堆一樣多,但還多出一個。它把剩下的一個留給老猴子,自己拿走其中的一堆。
第二個猴子來了,它把桃子分成五堆,五堆一樣多,但又多出一個。它把多出的一個留給老猴子,自己拿走其中的一堆。
後來的小猴子都如此照辦。最後剩下的桃子全部留給老猴子。這裡有n只小猴子,請你寫個程序計算一下在開始時至少有多少個桃子,以及最後老猴子最少能得到幾個桃子。
【輸入】
輸入包括多組測試數據。每組測試數據包括一個整數n(1≤n≤20)。
輸入以0結束,該行不做處理。
【輸出】
每組測試數據對應一行輸出。
包括兩個整數a,b。分別代表開始時最小需要的桃子數,和結束後老猴子最少能得到的桃子數。
【示例輸入】
51
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;
}