题目描述
给定一个整数 v。你可以对整数 v 进行若干次操作。每次操作,你可以:
- 操作1:令 v←(v+1) mod 32768,或
- 操作2:令 v←(2⋅v) mod 32768
(即:每次操作从上述两种类型的操作中任选一个操作执行)。
这里,mod 运算指的是 模运算
,a mod b 的结果就是 a÷b 的余数。
现在给你一个长度为 n 的数列 a1,a2,…,an。对于数列中的每个元素 ai,你需要回答出至少需要执行几次操作能够使 ai 变成 0 ?
输入格式
第一行,一个整数 n(1≤n≤32768)。
第二行,n 个整数 a1,a2,…,an(0≤ai<32768)。
输出格式
输出共一行,包含 n 个整数,两两之间以一个空格分隔。其中第 i 个整数表示将 ai 变为 0 至少需要执行几次操作。
4
19 32764 10240 49
14 4 4 15
说明/提示
样例解释
- a1=19,先对其进行 $$ 次操作1,再对其进行 13 次操作2,它会变成 0;
- a2=32764,对其进行 4 次操作1(32764→32765→32766→32767→0),它会变成 0;
- a3=10240,对其进行 4 次操作2(10240→20480→8192→16384→0),它会变成 0;
- a4=49,对其进行 15 次操作2,它会变成 0。
数据规模与约定
- 对于 20% 的数据,n≤16,ai<16
- 对于 50% 的数据,n≤1024,ai<1024
- 对于 100% 的数据,1≤n≤32768,0≤ai<32768