遞歸訓(xùn)練·農(nóng)場周圍的道路
題目描述
? John的奶牛對探索農(nóng)場周圍的地域很感興趣。最初,所有N頭奶牛沿著一條路一起行動。在遇到一個岔路口后,奶牛們分成兩組(沒有一組為空)后繼續(xù)往下走。當(dāng)其中的一組遇到另一個岔路口后,繼續(xù)分成兩組,一直這樣下去。
? ? 奶牛有一種奇特的分組方法:如果它們能將奶牛分成兩組奶牛數(shù)目相差K,則它們將按此方法分組;否則,它們將停止探索,開始安靜地吃草。
? ? 假定在路上總是會有新的岔路出行,計算最后停下來吃草的奶牛的組數(shù)
輸入
一行兩個用一個空格隔開的整數(shù)N和K,1<=N<=1000000000
輸出
一行一個整數(shù),表示最后停下來吃草的奶牛組數(shù)
樣例輸入
6 2
樣例輸出
3
我的看法:
找找規(guī)律再遞歸,分兩條路走,如果是奇數(shù)則停,sum++,不是則繼續(xù)遞歸。
c++代碼
#include<bits/stdc++.h>
using
namespace
std;
int
sum=0;
void
johncow(
int
n,
int
t)
{
????
int
k=n-t;
????
if
(k&1||k<1)
????
{
????????
sum++;
????????
return
;
????
}
????
johncow(k/2,t);
????
johncow(t+k/2,t);
}
int
main()
{
????
int
n,t;
????
scanf
(
"%d %d"
,&n,&t);
????
johncow(n,t);
????
printf
(
"%d"
,sum);
????
return
0;
}
標(biāo)簽: