題目敘述

給你兩個數字 $n$, $m$ $(1\le n, m\le 1000000)$,問有多少數對 $(i, j)$ 滿足 $i\in [n]$ 且 $j\in [m]$ 使得 $i+j$ 是 5 的倍數。

題解

由於 $n, m$ 範圍不大,所以不需要費心計算數學解, 我們可以直接枚舉 $i=1, 2,\ldots, n$,然後做點觀察:若 $m$ 是 5 的倍數,那顯然恰好會有 $m/5$ 個 $j$ 滿足條件。 那我們只要分別考慮 $j=1, 2, \ldots, 5\lfloor m/5\rfloor$,然後再枚舉剩下的 $j=5\lfloor m/5\rfloor+1, \ldots, m$ 一個個檢查就好啦~

參考程式碼

// by tmt514
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
typedef long long LL;

int main(void) {
  int n, m;
  LL ans=0;
  scanf("%d%d", &n, &m);
  for(int i=1;i<=n;i++) {
    ans += m/5 + (m%5+i%5>=5);
  }
  cout << ans << endl;
  return 0;
}