ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1086. Криптография

Reg Why I got Wrong Answer? // Задача 1086. Криптография 31 авг 2003 12:31
#include <fstream.h>
#include <string.h>

const char *Fn_Inp = "p1086.in" ;
const char *Fn_Out = "p1086.out" ;
const char EndLn = '\n' ;
const int MaxN = 16000 ;

typedef
  int TMark[ MaxN ] ;
typedef
  int TPrime[ MaxN ] ;

TMark Mark ;
TPrime Prime ;
long N , K , Tot ;

ifstream Read ( Fn_Inp ) ;
ofstream Write ( Fn_Out ) ;

void Init () {
  int i , j ;

  memset ( Mark , 1 , sizeof ( Mark ) ) ;
  memset ( Prime , 0 , sizeof ( Prime ) ) ;
  Mark[ 1 ] = 0 ;
  for ( i = 2 ; i < MaxN ; i++ )
    if ( Mark[ i ] ) {
      j = i + i ;
      while ( j < MaxN ) {
        Mark[ j ] = 0 ;
        j += i ;
      }
    }
  for ( i = 1 ; i < MaxN ; i++ )
    if ( Mark[ i ] )
      Prime[ Tot++ ] = i ;
}

void Work () {
  long i , Pos ;

  cin >> K ;
  for ( i = 0 ; i < K ; i++ ) {
    cin >> Pos ;
    cout << Prime[ Pos - 1 ] << EndLn ;
  }
}

int main () {
  Init () ;
  Work () ;
  return ( 0 ) ;
}