2020年10月29日 星期四

d411: 算了好久......

 題目來源: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);
  }
}


沒有留言:

張貼留言

o079. 4. 最佳選擇

 題目描述: 給一個長度為 n 的正整數序列 a1,a2...an ,你可以執行多次操作 (包含 0 次),每次操作只能選擇這個序列的第一個或最後一個數字,再將這個數字從序列中刪除並自己搜集起來。 求滿足總和不超過 k 且搜集的數字奇數和偶數個數相同的條件下,所能搜集的數字總和最...