#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdint.h>
#include <inttypes.h>
bool isPrime(int64_t v) {
if(v<2) return false;
if(v==2 || v==3) return true;
if((v%2)==0 || (v%3)==0) return false;
for(int64_t i=5;i*i<v;i+=2) if((v%i)==0) return false;
return true;
}
int64_t parse(char* src, int len) {
int64_t res;
char tmp=src[len];
src[len]=0;
sscanf(src, "%" SCNd64, &res);
src[len]=tmp;
return res;
}
int main(int argc, char** argv) {
char in[16];
scanf("%s",in);
int len=strlen(in);
for(int i=1;i<len;++i) {
if(in[i]=='0') continue; // nie moze byc zer wiodacych
int64_t p1=parse(in, i);
int64_t p2=parse(in+i, len-i);
// printf("Checking: %"PRId64" %"PRId64"\n", p1, p2);
if(isPrime(p1) && isPrime(p2)) {
printf("TAK\n");
return 0;
}
}
printf("NIE\n");
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include<stdio.h> #include<stdlib.h> #include<string.h> #include<stdint.h> #include <inttypes.h> bool isPrime(int64_t v) { if(v<2) return false; if(v==2 || v==3) return true; if((v%2)==0 || (v%3)==0) return false; for(int64_t i=5;i*i<v;i+=2) if((v%i)==0) return false; return true; } int64_t parse(char* src, int len) { int64_t res; char tmp=src[len]; src[len]=0; sscanf(src, "%" SCNd64, &res); src[len]=tmp; return res; } int main(int argc, char** argv) { char in[16]; scanf("%s",in); int len=strlen(in); for(int i=1;i<len;++i) { if(in[i]=='0') continue; // nie moze byc zer wiodacych int64_t p1=parse(in, i); int64_t p2=parse(in+i, len-i); // printf("Checking: %"PRId64" %"PRId64"\n", p1, p2); if(isPrime(p1) && isPrime(p2)) { printf("TAK\n"); return 0; } } printf("NIE\n"); return 0; } |
English