2011-06-01 22:31:56Morris
d411. 算了好久......
http://zerojudge.tw/ShowProblem?problemid=d411
內容 :
某一天,恆恆、衡衡要一決算數的速度,
他們想比一比某一個數字M是否為2的N次方的倍數,
而每次的M都是高達9999位的大數字呀!!!
但他們相信他們的數學能力。
我想說,那嚜大的數字電腦跑就好啦~
於是我也加入了戰局~~
但...............
我不會寫程式呀!!!!!
好心人幫幫我打贏他們兩人吧~~~
我們一共比了10場
輸入說明
:
每行輸入2個正整數M、N,
M代表上述的某數,N代表2的N次
0=<M<10^9999
0<=N<10
輸出說明
:
若M為2的N次的倍數 請輸出 YA!!終於算出M可被2的N次整除了!!
若不是 請輸出 可惡!!算了這麼久M竟然無法被2的N次整除
範例輸入 :
6 2 16 3
範例輸出 :
可惡!!算了這麼久6竟然無法被2的2次整除 YA!!終於算出16可被2的3次整除了!!
提示
:
2^N = pow(2,N)
記得加 #include<math.h>
出處
:
/**********************************************************************************/
/* Problem: d411 "算了好久......" from 愷愷 */
/* Language: C */
/* Result: AC (10ms, 292KB) on ZeroJudge */
/* Author: morris1028 at 2011-05-31 22:08:39 */
/**********************************************************************************/
#include<stdio.h>
main() {
char S[10001];
int a, N, s2[10]={1};
for(a = 1; a < 10;s2[a]=s2[a-1]*2,a++);
while(scanf("%s %d", S, &N) == 2) {
int t = S[0]-'0';
for(a = 1; S[a]; a++) {
t = t*10 + S[a]-'0';
t %= s2[N];
}
if(t) printf("可惡!!算了這麼久%s竟然無法被2的%d次整除\n", S, N);
else printf("YA!!終於算出%s可被2的%d次整除了!!\n", S, N);
}
return 0;
}