C - String Prima

Author: Jeffrey Wijaya

Dengan panjang string tidak lebih dari 100 dan bilangan prima lebih kecil dari 1000 (maks. 3 digit), soal ini bisa diselesaikan dengan bruteforce. Cukup uji nC3 angka yang bisa dibentuk dari teks yang diberikan. Untuk mengatasi jika bilangan prima terbesar adalah 1 atau 2 digit, tambahkan dua angka nol di depan teks yang diberikan.

11 peserta berhasil menyelesaikan soal ini.


Solusi C/C++
oleh Eko Wibowo
#include <cstdio>
#include <string>
#include <algorithm>
using namespace std;

bool isprime(int x)
{
  if ( x == 2 ) return true;
  if ( x  < 2 ) return false;
  for ( int i = 2; i * i <= x; i++ )
    if ( x % i == 0 ) return false;
  return true;
}

int main()
{
  int  T;
  char s[200];
  s[0] = s[1] = '0';
  scanf( "%d", &T );
  while ( T-- )
  {
    int ans = -1;
    scanf( "%s", s + 2 );
    int len = strlen(s);
    for ( int i  = 0; i < len; i++ )
      for ( int j = i + 1; j < len; j++ )
        for ( int k = j + 1; k < len; k++ ) {
          int temp = (s[i]-'0') * 100 + (s[j]-'0') * 10 + s[k] -'0';
          if ( isprime(temp) ) ans = max(ans,temp);
        }
    printf( "%d\n", ans );
  }
  return 0;
}

Solusi PASCAL
oleh Eko Wibowo
function isprime(x: longint): boolean;
var
  i: longint;
begin
  if ( x = 2 ) then
  begin
    isprime := true;
    exit;
  end;
  if ( x < 2 ) then
  begin
    isprime := false;
    exit;
  end;
  i := 2;
  while ( i * i <= x ) do
  begin
    if ( x mod i = 0 ) then
    begin
      isprime := false;
      exit;
    end;
    i := i + 1;
  end;
  isprime := true;
end;

var
  T, i, j, k, res, len, temp: longint;
  s: string;
begin
  readln(T);
  while ( T > 0 ) do
  begin
    T := T - 1;
    readln(s);
    s := '00' + s;
    len := length(s);
    res := -1;
    for i := 1 to len do
      for j := i + 1 to len do
        for k := j + 1 to len do
        begin
          temp := ord(s[i]-'0') * 100 + ord(s[j]-'0') * 10 + ord(s[k]-'0');
          if ( temp > res ) and isprime(temp) then res:=temp;
        end;
    writeln(res);
  end;
end.