Advertisement
Guest User

Untitled

a guest
Sep 12th, 2019
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.60 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. int gt(char a) {
  6.     if (a >= '0' && a <= '9')
  7.     {
  8.         return (a - '0');
  9.     }
  10.     if (a >= 'a' && a <= 'f')
  11.     {
  12.         return (10 + a - 'a');
  13.     }
  14.     return -1;
  15. }
  16.  
  17. char tg(int a) {
  18.     if (a >= 0 && a <= 9)
  19.     {
  20.         return (a + '0');
  21.     }
  22.     if (a >= 10 && a <= 15)
  23.     {
  24.         return (a - 10 + 'a');
  25.     }
  26.     return 0;
  27. }
  28.  
  29. int sol0() {
  30.     int a, b;
  31.     scanf("%d", &a);
  32.     scanf("%d", &b);
  33.     if (a < 2 || a > 16 || b < 2 || b > 16)
  34.     {
  35.         printf("bad input");
  36.         return 0;
  37.     }
  38.     char d[20];
  39.     scanf("%s", d);
  40.     int f = 0, s = 0, sd = 1, n = strlen(d);
  41.     bool z = 0;
  42.     for (int i = 0; i < n; i++)
  43.     {
  44.         if (d[i] == '.')
  45.         {
  46.             z = 1;
  47.         }
  48.         else {
  49.             if (!z)
  50.             {
  51.                 f *= a;
  52.                 int y = gt(d[i]);
  53.                 if (y == -1 || y >= a)
  54.                 {
  55.                     printf("bad input");
  56.                     return 0;
  57.                 }
  58.                 f += y;
  59.             }
  60.             else
  61.             {
  62.                 s *= a;
  63.                 sd *= a;
  64.                 int y = gt(d[i]);
  65.                 if (y == -1 || y >= a)
  66.                 {
  67.                     printf("bad input");
  68.                     return 0;
  69.                 }
  70.                 s += y;
  71.             }
  72.         }
  73.     }
  74.     n = 0;
  75.     char cc[20] = "";
  76.     int j = 0;
  77.     if (f == 0) {
  78.         cc[0] = 0;
  79.         j++;
  80.     }
  81.     while (f != 0)
  82.     {
  83.         cc[j] = tg(f % b);
  84.         f /= b;
  85.         j++;
  86.     }
  87.     for (int i = strlen(cc) - 1; i >= 0; i--)
  88.     {
  89.         printf("%c", cc[i]);
  90.     }
  91.     if (s != 0)
  92.     {
  93.         printf(".");
  94.         int u = 0;
  95.         while (s != 0 && u < 12)
  96.         {
  97.             s *= b;
  98.             if (!(s % sd))
  99.             {
  100.                 printf("%c", tg(s / sd));
  101.                 s = 0;
  102.             }
  103.             else
  104.             {
  105.                 if (s / sd > 0)
  106.                 {
  107.                     printf("%c", tg(s / sd));
  108.                 }
  109.                 else
  110.                 {
  111.                     printf("0");
  112.                 }
  113.                 s %= sd;
  114.             }
  115.             u++;
  116.         }
  117.     }
  118.     return 0;
  119. }
  120.  
  121.  
  122. int main() {
  123.     sol0();
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement