답안 #688622

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
688622 2023-01-27T21:12:35 Z inwbear Lutrija (COCI19_lutrija) C++14
70 / 70
447 ms 332 KB
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
vector<LL>ans;
LL a,b;
bool isprime(LL x){
  if(x<2)return false;
  LL k=sqrt(x);
  for(LL i=2;i<=k&&i<x;i++){
    if(x%i==0)return false;
  }
  return true;
}
bool to2(LL x,bool rev){
  if(x==2){
    if(rev)ans.push_back(2);
    return true;
  }
  bool p=false;
  LL rr=x;
  while(1){
    if(!isprime(rr))break;
    if(isprime(rr-2)){
      p=true;
      break;
    }
    rr=rr+2;
  }
  if(p){
    if(rev){
      for(LL i=x;i<=rr;i+=2)ans.push_back(i);
      ans.push_back(2);
    }
    else for(LL i=rr;i>=x;i-=2)ans.push_back(i);
  }
  else{
    rr=x;
    while(1){
      if(!isprime(rr))break;
      if(isprime(rr-2)){
        p=true;
        break;
      }
      rr=rr-2;
    }
    if(p){
      if(rev){
        for(LL i=x;i>=rr;i-=2)ans.push_back(i);
        ans.push_back(2);
      }
      else for(LL i=rr;i<=x;i+=2)ans.push_back(i);
    }
  }
  return p;
}
int main(){
  scanf("%lld %lld",&a,&b);
  if(to2(a,true)&&to2(b,false)){
    printf("%d\n",ans.size());
    for(int i=0;i<ans.size();i++)printf("%lld ",ans[i]);
  }
  else printf("-1");
}

Compilation message

lutrija.cpp: In function 'int main()':
lutrija.cpp:59:14: warning: format '%d' expects argument of type 'int', but argument 2 has type 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wformat=]
   59 |     printf("%d\n",ans.size());
      |             ~^    ~~~~~~~~~~
      |              |            |
      |              int          std::vector<long long int>::size_type {aka long unsigned int}
      |             %ld
lutrija.cpp:60:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   60 |     for(int i=0;i<ans.size();i++)printf("%lld ",ans[i]);
      |                 ~^~~~~~~~~~~
lutrija.cpp:57:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   57 |   scanf("%lld %lld",&a,&b);
      |   ~~~~~^~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 304 KB Output is correct
3 Correct 0 ms 264 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 428 ms 276 KB Output is correct
2 Correct 74 ms 280 KB Output is correct
3 Correct 423 ms 280 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 406 ms 276 KB Output is correct
2 Correct 26 ms 212 KB Output is correct
3 Correct 309 ms 332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 447 ms 272 KB Output is correct
2 Correct 139 ms 284 KB Output is correct
3 Correct 279 ms 288 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 336 ms 280 KB Output is correct
2 Correct 59 ms 292 KB Output is correct
3 Correct 97 ms 284 KB Output is correct