Codeforces Round #581 (Div. 2)

 

传送门

 

A.BowWow and the Timetable(思维)

•题意

  在 Saint Petersburg 城市,每天有 T ($T \leq 2_100$)分钟;

  这个城市有一个车站,该车站只在第 $4^0,4^1,4^2,\cdots$ 分钟有车经过;

  问,如果在 S 分钟到达车站,会错过几辆车?

  其中,S 是按照二进制的形式给出;

•题解一(BigInteger)

  用 Java 中的大数处理这个题,就是先将 S 转化成十进制,在转化成 4 的幂的形式;

  属于无脑操作,细节看代码;

•Code

   CodeForces1204A.java

•题解二(二进制转四进制)

  $2^k=4^{\lfloor{\frac{k}{2}}\rfloor}$;

  且有 $2^0+2^1+2^2+\cdots +2^k < 2^{k+1}$

  假设输入的二进制数 S 存放在字符数组中,并且 |S| = k,即最高位为 $2_{k-1}$;

  如果 k-1 为奇数,即 k 为偶数,那么  $4^{\lfloor{\frac{k-1}{2}}\rfloor} < S < 4^{\lfloor{\frac{k}{2}}\rfloor}$,易得共错过 $\frac{k}{2}$ 辆车;

  如果 k-1 为偶数,那么,$S \ge 4^{\lfloor{\frac{k-1}{2}}\rfloor}$,此时需要判断 $S$ 是否等于 $4^{\lfloor{\frac{k-1}{2}}\rfloor}$:

    如果 '>',那么答案为 $\frac{k-1}{2}+1$;

    反之,答案为 $\frac{k-1}{2}$,即判断第 $4^{\lfloor{\frac{k-1}{2}}\rfloor}$ 分钟的车是否会错过;

•Code

  CodeForces1204A.cpp

 

posted @ 2019-09-12 20:59  HHHyacinth  阅读(150)  评论(0编辑  收藏  举报