D - Yet Another Recursive Function Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 400400

問題文

非負整数 xx に対し定義される関数 f(x)f(x) は以下の条件を満たします。

  • f(0)=1f(0) = 1
  • 任意の正整数 kk に対し f(k)=f(k2)+f(k3)f(k) = f(\lfloor \frac{k}{2}\rfloor) + f(\lfloor \frac{k}{3}\rfloor)

ここで、A\lfloor A \rfloorAA の小数点以下を切り捨てた値を指します。

このとき、 f(N)f(N) を求めてください。

制約

  • NN0N10180 \le N \le 10^{18} を満たす整数

入力

入力は以下の形式で標準入力から与えられる。

NN

出力

答えを出力せよ。


入力例 1Copy

Copy
2

出力例 1Copy

Copy
3

f(2)=f(22)+f(23)=f(1)+f(0)=(f(12)+f(13))+f(0)=(f(0)+f(0))+f(0)=3f(2) = f(\lfloor \frac{2}{2}\rfloor) + f(\lfloor \frac{2}{3}\rfloor) = f(1) + f(0) =(f(\lfloor \frac{1}{2}\rfloor) + f(\lfloor \frac{1}{3}\rfloor)) + f(0) =(f(0)+f(0)) + f(0)= 3 です。


入力例 2Copy

Copy
0

出力例 2Copy

Copy
1

入力例 3Copy

Copy
100

出力例 3Copy

Copy
55

Score : 400400 points

Problem Statement

A function f(x)f(x) defined for non-negative integers xx satisfies the following conditions.

  • f(0)=1f(0) = 1.
  • f(k)=f(k2)+f(k3)f(k) = f(\lfloor \frac{k}{2}\rfloor) + f(\lfloor \frac{k}{3}\rfloor) for any positive integer kk.

Here, A\lfloor A \rfloor denotes the value of AA rounded down to an integer.

Find f(N)f(N).

Constraints

  • NN is an integer satisfying 0N10180 \le N \le 10^{18}.

Input

The input is given from Standard Input in the following format:

NN

Output

Print the answer.


Sample Input 1Copy

Copy
2

Sample Output 1Copy

Copy
3

We have f(2)=f(22)+f(23)=f(1)+f(0)=(f(12)+f(13))+f(0)=(f(0)+f(0))+f(0)=3f(2) = f(\lfloor \frac{2}{2}\rfloor) + f(\lfloor \frac{2}{3}\rfloor) = f(1) + f(0) =(f(\lfloor \frac{1}{2}\rfloor) + f(\lfloor \frac{1}{3}\rfloor)) + f(0) =(f(0)+f(0)) + f(0)= 3.


Sample Input 2Copy

Copy
0

Sample Output 2Copy

Copy
1

Sample Input 3Copy

Copy
100

Sample Output 3Copy

Copy
55


2025-04-23 (Wed)
06:20:31 +00:00