题目 描述
Die Kühe von Bauer John haben sich dafür interessiert, das Gebiet rund um die Farm zu erkunden. Anfänglich fahren alle N (1 <= N <= 1.000.000.000) Kühe in einer großen Gruppe eine Straße entlang. Wenn die Gruppe auf eine Weggabelung stößt, teilt sie sich manchmal in zwei kleinere (nicht leere) Gruppen auf, wobei jede Gruppe eine der Straßen entlang fährt. Wenn eine dieser Gruppen an einer anderen Gabelung ankommt, kann sie sich erneut teilen und so weiter.
Die Kühe haben eine besondere Art der Aufteilung entwickelt: Wenn sie sich in zwei Gruppen aufteilen können, so dass sich die Gruppengrößen um genau K (1 <= K <= 1000) unterscheiden, werden sie sich auf diese Weise aufteilen; Andernfalls hören sie auf zu erkunden und grasen friedlich.
Unter der Annahme, dass immer neue Gabeln auf der Straße sind, berechnen Sie die endgültige Anzahl von Gruppen friedlich weidender Kühe.
Johns N-Kühe (1 ≤ N ≤ 1.000.000.000) machten sich auf den Weg, um das Land rund um die Ranch zu erkunden. Sie gehen eine Straße entlang, bis sie die Drei-Wege-Kreuzung erreichen (es kann davon ausgegangen werden, dass alle Kreuzungen so sind). Zu diesem Zeitpunkt kann diese Kuhherde in zwei Gruppen eingeteilt werden und auf den nächsten beiden Straßen weitergehen. Wenn sie wieder zur Drei-Wege-Kreuzung gehen, ist es immer noch möglich, sich in zwei Gruppen aufzuteilen und weiter zu gehen. Die Aufteilungsmethode von Milchkühen ist sehr seltsam: Wenn diese Herde von Milchkühen genau in zwei Teile geteilt werden kann und die Anzahl der Kühe in den beiden Teilen genau die Differenz K (1 ≤ K ≤ 1000) ist, wird die Herde an der Kreuzung von drei Gabeln geteilt. Andernfalls wird sich die Herde nicht spalten, sie werden alle hier bleiben und friedlich grasen. Bitte berechnen Sie, wie viele Herden von Kühen am Ende friedlich weiden werden.
Eingabeformat
- Zeile 1: Zwei durch Leerzeichen getrennte Ganzzahlen: N und K.
Ausgabeformat
- Zeile 1: Eine einzelne Ganzzahl, die die Anzahl der Gruppen weidender Kühe darstellt
Eingabe- und Ausgabebeispiel
Eingabe Nr. 1
6 2
Ausgabe Nr. 1
3
Beschreibung / Eingabeaufforderung
Es gibt 6 Kühe und der Unterschied in der Gruppengröße beträgt 2.
Es gibt 3 Endgruppen (mit 2, 1 und 3 Kühen).
6/
2 4/
1 bis 3
Code:
#include<iostream>
using namespace std;
int n, k;
int f(int a)
{
if(a - k > 0 && (a - k) % 2 == 0) return f((a + k) / 2) + f((a - k) / 2);
else return 1;
}
int main()
{
cin >> n >> k;
cout << f(n) << endl;
return 0;
}