1. #include <stdio.h>
  2.  
  3. int primechk(int num);
  4.  
  5. int get(int a, int b, int c);
  6.  
  7. int find(int arr[], int n, int target);
  8.  
  9.  
  10. int main(){
  11.  
  12.  
  13.  
  14. int i,j,k,tmp,tmp2,tests;
  15.  
  16. scanf("%d", &tests);
  17.  
  18.  
  19.  
  20. int* arr = (int*)malloc(tests*sizeof(int));
  21.  
  22. char str[100][500];
  23.  
  24.  
  25.  
  26. for(i=0; i<tests; i++){
  27.  
  28. scanf("%d", &arr[i]);
  29.  
  30. scanf("%s", &str[i][0]);
  31.  
  32. }
  33.  
  34.  
  35.  
  36. int primes[12];
  37.  
  38. j=0;
  39.  
  40. for(i=65; i<=90; i++){
  41.  
  42. if(primechk(i)==1){
  43.  
  44. primes[j]=i;
  45.  
  46. j++;
  47.  
  48. }
  49.  
  50. }
  51.  
  52. for(i=97; i<=122; i++){
  53.  
  54. if(primechk(i)==1){
  55.  
  56. primes[j]=i;
  57.  
  58. j++;
  59.  
  60. }
  61.  
  62. }
  63.  
  64.  
  65.  
  66.  
  67. for(i=0; i<tests; i++){
  68.  
  69. for(j=0; j<arr[i]; j++){
  70.  
  71. if(str[i][j]<65 ){
  72.  
  73. printf("C");
  74.  
  75. continue;
  76.  
  77. }
  78.  
  79. if(str[i][j]>122){
  80.  
  81. printf("%c", 113);
  82.  
  83. continue;
  84.  
  85. }
  86.  
  87. if(primechk(str[i][j])==1){
  88.  
  89. printf("%c", str[i][j]);
  90.  
  91. continue;
  92.  
  93. }
  94.  
  95. else{
  96.  
  97. tmp = find(primes,12,str[i][j]);
  98.  
  99. printf("%c", tmp);
  100.  
  101. }
  102.  
  103. }
  104.  
  105. printf("\n");
  106.  
  107. }
  108.  
  109. }
  110.  
  111.  
  112.  
  113. int primechk(int num){
  114.  
  115. int i;
  116.  
  117. for(i=2; i<=num/2; i++){
  118.  
  119. if(num%i==0){
  120.  
  121. return 0;
  122.  
  123. }
  124.  
  125. }
  126.  
  127. return 1;
  128.  
  129. }
  130.  
  131.  
  132.  
  133. int get(int val1, int val2, int target){
  134.  
  135. if (target-val1 > val2-target)
  136.  
  137. return val2;
  138.  
  139. else
  140.  
  141. return val1;
  142.  
  143. }
  144.  
  145.  
  146.  
  147. int find(int arr[], int n, int target){
  148.  
  149.  
  150. if (target <= arr[0])
  151.  
  152. return arr[0];
  153.  
  154. if (target >= arr[n - 1])
  155.  
  156. return arr[n - 1];
  157.  
  158.  
  159. int i=0,j=n,m;
  160.  
  161. while (i < j) {
  162.  
  163.  
  164. m = (i+j) / 2;
  165.  
  166.  
  167. if (arr[m] == target)
  168.  
  169. return arr[m];
  170.  
  171.  
  172. if (target < arr[m]) {
  173.  
  174. if (m>0 && target>arr[m-1])
  175.  
  176. return get(arr[m - 1], arr[m], target);
  177.  
  178. j = m;
  179.  
  180. }
  181.  
  182. else {
  183.  
  184. if (m<n-1 && target<arr[m+1])
  185.  
  186. return get(arr[m],
  187.  
  188. arr[m+1], target);
  189.  
  190. i = m+1;
  191.  
  192. }
  193.  
  194. }
  195.  
  196. return arr[m];
  197.  
  198. }
Language: C