結果

問題 No.1657 Sum is Prime (Easy Version)
ユーザー LayCurseLayCurse
提出日時 2021-08-01 20:23:47
言語 C++17
(gcc 12.3.0 + boost 1.83.0)
結果
AC  
実行時間 769 ms / 2,000 ms
コード長 3,317 bytes
コンパイル時間 2,773 ms
コンパイル使用メモリ 219,272 KB
実行使用メモリ 159,520 KB
最終ジャッジ日時 2024-11-21 00:17:50
合計ジャッジ時間 22,491 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 765 ms
159,276 KB
testcase_01 AC 758 ms
159,384 KB
testcase_02 AC 768 ms
159,408 KB
testcase_03 AC 762 ms
159,344 KB
testcase_04 AC 758 ms
159,320 KB
testcase_05 AC 766 ms
159,380 KB
testcase_06 AC 758 ms
159,396 KB
testcase_07 AC 764 ms
159,308 KB
testcase_08 AC 756 ms
159,332 KB
testcase_09 AC 759 ms
159,276 KB
testcase_10 AC 769 ms
159,316 KB
testcase_11 AC 761 ms
159,320 KB
testcase_12 AC 755 ms
159,340 KB
testcase_13 AC 764 ms
159,396 KB
testcase_14 AC 762 ms
159,312 KB
testcase_15 AC 749 ms
159,304 KB
testcase_16 AC 754 ms
159,520 KB
testcase_17 AC 762 ms
159,364 KB
testcase_18 AC 760 ms
159,416 KB
testcase_19 AC 756 ms
159,332 KB
testcase_20 AC 767 ms
159,300 KB
testcase_21 AC 753 ms
159,368 KB
testcase_22 AC 757 ms
159,416 KB
testcase_23 AC 755 ms
159,316 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("inline")
#include<bits/stdc++.h>
using namespace std;
struct MY_WRITER{
  char buf[1048576];
  int s;
  int e;
  MY_WRITER(){
    s = 0;
    e = 1048576;
  }
  ~MY_WRITER(){
    if(s){
      fwrite_unlocked(buf, 1, s, stdout);
    }
  }
}
;
MY_WRITER MY_WRITER_VAR;
void my_putchar_unlocked(int a){
  if(MY_WRITER_VAR.s == MY_WRITER_VAR.e){
    fwrite_unlocked(MY_WRITER_VAR.buf, 1, MY_WRITER_VAR.s, stdout);
    MY_WRITER_VAR.s = 0;
  }
  MY_WRITER_VAR.buf[MY_WRITER_VAR.s++] = a;
}
inline void wt_L(char a){
  my_putchar_unlocked(a);
}
inline void wt_L(long long x){
  int s=0;
  int m=0;
  char f[20];
  if(x<0){
    m=1;
    x=-x;
  }
  while(x){
    f[s++]=x%10;
    x/=10;
  }
  if(!s){
    f[s++]=0;
  }
  if(m){
    my_putchar_unlocked('-');
  }
  while(s--){
    my_putchar_unlocked(f[s]+'0');
  }
}
long long llReader(long long mn, long long mx, char nx){
  int i;
  int fg = 0;
  int m = 1;
  long long res = 0;
  double tmp = 0;
  for(;;){
    i = getchar();
    if(fg==0 && i=='-'){
      fg++;
      m = -1;
    }
    else if('0' <= i  &&  i <= '9'){
      fg++;
      res = 10 * res + i - '0';
      tmp = 10 * tmp + i - '0';
      assert(tmp < 1e20);
    }
    else{
      break;
    }
  }
  assert(tmp / 2 <= res);
  assert((m==1 && fg >= 1) || (m==-1 && fg >= 2));
  assert(mn <= m * res  &&  m * res <= mx);
  assert(i == nx);
  return m * res;
}
vector<long long> ppp(20000000+1);
long long solve1(long long L, long long R){
  int i;
  long long res = 0;
  for(i=0;i<20000000+1;i++){
    if(L<=i && i<=R && ppp[i]){
      res++;
    }
  }
  for(i=0;i<20000000+1;i++){
    if(2*L+1<=i && i<=2*R-1 && ppp[i]){
      res++;
    }
  }
  return res;
}
int main(){
  long long L;
  long long R;
  long long res;
  L = llReader(1, 10000000, ' ');
  R = llReader(L, 10000000-1, '\n');
  assert(getchar() == EOF);
  int i;
  int j;
  for(i=2;i<20000000+1;i++){
    ppp[i] = 1;
  }
  for(i=2;i<20000000+1;i++){
    if(ppp[i]){
      for(j=2*i;j<20000000+1;j+=i){
        ppp[j] = 0;
      }
    }
  }
  res = solve1(L,R);
  wt_L(res);
  wt_L('\n');
  return 0;
}
// cLay version 20210717-1 [beta]

// --- original code ---
// ll llReader(ll mn, ll mx, char nx){
//   int i, fg = 0, m = 1;
//   ll res = 0; double tmp = 0;
// 
//   for(;;){
//     i = getchar();
//     if(fg==0 && i=='-'){
//       fg++;
//       m = -1;
//     } else if('0' <= i <= '9'){
//       fg++;
//       res = 10 * res + i - '0';
//       tmp = 10 * tmp + i - '0';
//       assert(tmp < 1e20);
//     } else {
//       break;
//     }
//   }
//   assert(tmp / 2 <= res);
//   assert((m==1 && fg >= 1) || (m==-1 && fg >= 2));
//   assert(mn <= m * res <= mx);
//   assert(i == nx);
//   return m * res;
// }
// 
// 
// vector<ll> ppp(2d7+1);
// ll solve1(ll L, ll R){
//   int i;
//   ll res = 0;
//   for(i=0;i<2d7+1;i++) if(L<=i<=R && ppp[i]) res++;
//   for(i=0;i<2d7+1;i++) if(2*L+1<=i<=2*R-1 && ppp[i]) res++;
//   return res;
// }
// 
// {
//   ll L, R, res;
//   L = llReader(1, 1d7, ' ');
//   R = llReader(L, 1d7-1, '\n');
//   assert(getchar() == EOF);
//   
//   int i, j;
//   for(i=2;i<2d7+1;i++) ppp[i] = 1;
//   for(i=2;i<2d7+1;i++) if(ppp[i]) for(j=2*i;j<2d7+1;j+=i) ppp[j] = 0;
// 
//   res = solve1(L,R);
//   wt(res);
// }
0