YEZAELP

PROG-1084: ลุ้นตอบปัญหา (riddle)

Mar 22nd, 2021 (edited)
104
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.93 KB | None
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. using lli = long long;
  5.  
  6. int main(){
  7.  
  8.     lli x, y, k;
  9.     scanf("%lld%lld%lld", &x, &y, &k);
  10.  
  11.     if(y < 5){
  12.         printf("0");
  13.         return 0;
  14.     }
  15.  
  16.     lli a, b;
  17.     if(x%5 == 0) a = x;
  18.     else a = (x/5)*5 + 5;
  19.     b = 5*(y/5);
  20.  
  21.     lli cnt = 0, sum = 0, idx = a - 5;
  22.     // idx  คิดก่อน a เช่น [23, 57], idx เริ่มคิดที่ 20
  23.     while(idx > 0){
  24.         idx = idx / 5;
  25.         cnt += idx;
  26.     }
  27.     sum = (a - x) * cnt;
  28.     sum %= k;
  29.  
  30.     lli i;
  31.     for(i = a ; i <= b; i = i+5){
  32.         lli idx = i;
  33.         while(idx % 5 == 0){
  34.             idx = idx/5;
  35.             cnt ++;
  36.         }
  37.         sum += cnt * 5;
  38.         sum %= k;
  39.     }
  40.  
  41.     sum += cnt * (y-i+1);
  42.     sum %= k;
  43.     if(sum < 0) sum = sum + k;
  44.  
  45.     if(y-x+1 < 5) printf("%lld", (cnt * (y-x+1)) % k);
  46.     else printf("%lld", sum);
  47.  
  48.     return 0;
  49. }
  50.  
RAW Paste Data Copied