農場周圍的道路 遞迴

2021-09-12 07:30:47 字數 777 閱讀 3796

約翰的 n (1 ≤ n ≤ 10^9) 只奶牛要出發去探索牧場四周的土地.她們將沿著一條路走,一直走到三岔路口(可以認為所有的路口都是這樣的)。這時候,這一群奶牛可能會分成兩群,分別沿著接下來的兩條路繼續走。如果她們再次走到三岔路口,那麼仍有可能繼續**成兩群繼續走。

奶牛的**方式十分古怪:如果這一群奶牛可以精確地分成兩部分(大小不能為零),這兩部分的牛數恰好相差 k (1 ≤ k ≤ 1000),那麼在三岔路口牛群就會**。否則,牛群不會**,她們都將在這裡待下去,平靜地吃草。請計算,最終將會有多少 群 奶牛在平靜地吃草.

輸入格式

兩個整數 n,k。

輸出格式

乙個整數,表示最終奶牛會分成的群數。

輸出時每行末尾的多餘空格,不影響答案正確性

樣例輸入

6 2樣例輸出

3解題思路:

分析題意,只要分後兩群奶牛的差為k 這群奶牛就可以分

假設總數q能被分為兩部分,相差為k,那麼設其中一部分為x,則這兩群奶牛可分別表示為

x1 = x

x2 = x + k

-> x + k + x = q

–> x = (q - k) / 2

有為了滿足實際條件,x1,x2都要為整數(不可能有半隻奶牛吧。。。) 這便是主要思路。。

#include#define ll long long

using namespace std;

ll k,n;

ll dfs(int v)

int main()

農場周圍的道路 學習記錄

農場周圍的道路 學習記錄 這題的關鍵在於知道每次分組後,分成的兩組羊群的數量分別為 n k 2和 n k 2 因此可以用遞迴實現。自己寫的 如下 include using namespace std int num 1 農場周圍的道路 intfunction int n,int k else re...

相連的農場

題目描述 farmer john的農場被一次意外事故破壞了,有一些農場與其他的農場之間有道路相連,而有些道路卻已被破壞。這使得farmer john 無法了解到從乙個農場能否到達另乙個農場。你的任務就是幫助farmer john來了解哪些農場是連通的。輸入格式 第一行是點數n 1 n 500 以下n...

小K的農場

小k在mc裡面建立很多很多的農場,總共n個,以至於他自己都忘記了每個農場中種植作物的具體數量了,他只記得一些含糊的資訊 共m個 以下列三種形式描述 農場a比農場b至少多種植了c個單位的作物,農場a比農場b至多多種植了c個單位的作物,農場a與農場b種植的作物數一樣多。但是,由於小k的記憶有些偏差,所以...