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}} floor}$;

  且有 $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}} floor} < S < 4^{lfloor{frac{k}{2}} floor}$,易得共错过 $frac{k}{2}$ 辆车;

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

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

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

•Code

  CodeForces1204A.cpp

原文地址:https://www.cnblogs.com/violet-acmer/p/11515160.html