題目來源:https://zerojudge.tw/ShowProblem?problemid=d411
技巧:大數運算
這題要注意的是,M值高達10^9999,這必然沒辦法用基本的數字運算來處理。
以下附上程式碼:
#include <iostream>
#include<string>
#include <math.h>
using namespace std;
int n;
void mod(string num , int m) {
int check = 0;
for(int i = 0; i < num.length(); i++) {
check *= 10;
check += num[i] - '0';
check = check % m;
}
if(check == 0) {
cout <<"YA!!終於算出"+num+"可被2的" + to_string(n)+"次整除了!!\n";
} else {
cout << "可惡!!算了這麼久"+num+"竟然無法被2的"+to_string(n) + "次整除\n";
}
}
int main() {
cin.tie(0),cin.sync_with_stdio(0);
int m;
string num;
while(cin >> num >> n) {
m = pow(2 , n);
mod(num , m);
}
}
沒有留言:
張貼留言