本站作为LDUOnlineJudge的测试版本进行演示,官方网站请访问http://icpc.ldu.edu.cn
[Hidden]

1020. 绵羊的银币


Description

我断然没想到面前这景象,被黑雾所包围的众兽,以及那辆由金角鹿所驱动的战车。
「显然你已经知道我是谁了吧」那个女人抚摸着金角鹿身上的皮毛
「阿尔忒弥斯,司掌狩猎和野兽的狩猎女神」我有点头疼,居然连这种神祇都能召唤而来,那个圣杯的确是个不得了的问题
「不错,我即是七骑之中的弓之骑士(archer)」她似乎很乐于享受这场闹剧「你只需要回答我的一个问题就可以继续前行了,若不能的话,最好你有百般武艺」
「洗耳恭听」我掏出一根雪茄点燃,想缓解一下自己
「曾有一个牧羊人和一个商人进行交易,但他们对交易的价格争执不下,最终他们来寻求我的智慧。但是我并不想他们过于轻易的得到神的帮助,于是我便提出一个规则。如果当前商
人要向牧羊人购买一定数量的羊,那么价格应当等于购买这个数量的四分之一的羊的价格加上购买这个数量的一半的羊的价格。显然,羊只能一整只的卖出,而不能半只卖出,所以当
这个数量不能被分成四份或两份,就应该下取整,这是对商人的优惠」
「这个问题最终会回到购买数量很小的情况」
「不错,商人不买羊,就不需要支付银币,而如果他购买一只羊,那么他需要支付一枚银币」
她没有停下手上的动作「无论最始的数量多大,都会回归到一和零上面。想必你已经有了快捷计算出需要支付的金额的办法了吧,即使没有我也要开始提问了,若是无法回答,愿君安
息」
我的脑中浮现了这三个公式
f[0] = 0
f[1] = 1
f[n] = f[n/2] + f[n/4] (n>=2)

Input

第一行一个整数T ( 1 <= T <= 250000 ) ,表示T 次询问。
下面T 行,每行一个整数n ( 0 <= n <= 1018 ) ,表示当前需要购买多少只绵羊
由于输入输出过多,请使用scanf 和printf,否则容易超时
n 极大,log2(n)精度不够,请不要使用<math.h>的任何log 函数,否则容易Wrong Answer

Output

对于每个询问,输出需要支付的银币数量

Samples

Input Copy
4
1
2
3
4
Output
1
1
1
2

Hint


Source

2019广东工业大学新生赛
Problem Information

Time Limit: 1000MS (C/C++,Others×2)
Memory Limit: 128MB (C/C++,Others×2)
Special Judge: No
AC/Submit: 0 / 1
Tags:
My history solutions

You didn't submit any solution!
Submit your solution

Login Register