求助大佬,样例过了其他全WA
查看原帖
求助大佬,样例过了其他全WA
246331
mystic_qwq楼主2023/10/4 19:39
#include <stdio.h>
#include <algorithm>
#ifdef ONLINE_JUDGE
  #define G getchar_unlocked()
#endif
#ifndef G
  #define G _getchar_nolock()
#endif
static inline int r(){
  char c; int i = 0; while((c = G) < '0');
  for(; c >= '0'; c = G) 
    i = (i << 1) + (i << 3) + (c ^ '0');
  return i;
}
using std::sort;
struct P{
  int l, r, m;
  P(int _ = 0, int __ = 0){ // must = an integer
    l = _; r = __; m = _ * __;
  }
} m[1000];
bool cmp(P a, P b){return a.m < b.m; }
long long mul[3000], lm = 1, e = 1e9;
long long ans[3000], p = 0, pos = -1, la; bool j;
int main(){
  int n = r(), kl = r(), kr = r();
  for(int i = 0; i < n; ++i){
    m[i] = P(r(), r());
  }
  sort(m, m + n, cmp);
  *mul = kl;
  for(int i = 0; i < n - 1; ++i){
    for(int j = 0; j < lm; ++j){
      mul[j] *= m[i].l;
      if(mul[j] >= e){
        mul[j + 1] += mul[j] / e;
        mul[j] %= e;
      }
    }
    if(mul[lm]) ++lm;
  }
  int d = m[n - 1].r;
  for(int i = lm - 1; ~i; --i, ++la){
    p = p * e + mul[i];
    if(p > d){
      if(!j){
        pos = i; j = 1;
      }
      ans[la] = p / d;
      p %= d;
    }
  }
  if(pos == -1) return putchar('0'), 0;
  printf("%lld", ans[pos]);
  for(int i = pos + 1; i < la; ++i)
    printf("%09lld", ans[i]);
  return 0;
}

2023/10/4 19:39
加载中...