题意:
给出两个个二进制的数,求最大公约数(这个数最大能到2^1000);
思路:
因为数字太大,所以直接算肯定不行;
所以这题用了Java的大数类;
容易就过了,以后再补c的代码:
</pre><pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'Source Code Pro';font-size:14pt;"><span style="color:#629755;">/**
</span><span style="color:#629755;"> * Created by yehao on 15-3-18.
</span><span style="color:#629755;"> */
</span><span style="color:#cc7832;">import </span>java.math.BigInteger<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">import </span>java.util.*<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">public class Main</span>{
<span style="color:#cc7832;">public static void </span><span style="color:#ffc66d;">main</span>(String[] arge) {
Scanner in = <span style="color:#cc7832;">new </span>Scanner(System.<span style="color:#9876aa;"><em>in</em></span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;"> int </span>t<span style="color:#cc7832;">;
</span><span style="color:#cc7832;"> </span>t = in.nextInt()<span style="color:#cc7832;">;
</span><span style="color:#cc7832;"> for</span>(<span style="color:#cc7832;">int </span>i = <span style="color:#6897bb;">0</span><span style="color:#cc7832;">; </span>i < t<span style="color:#cc7832;">; </span>i++) {
BigInteger a = in.nextBigInteger(<span style="color:#6897bb;">2</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;"> </span>BigInteger b = in.nextBigInteger(<span style="color:#6897bb;">2</span>)<span style="color:#cc7832;">;
</span><span style="color:#cc7832;"> </span>System.<span style="color:#9876aa;"><em>out</em></span>.println(<span style="color:#6a8759;">"Case #" </span>+ (i + <span style="color:#6897bb;">1</span>) +<span style="color:#6a8759;">": " </span>+ a.gcd(b).toString(<span style="color:#6897bb;">2</span>))<span style="color:#cc7832;">;
</span><span style="color:#cc7832;"> </span>}
}
}