Advertisement
Guest User

ЕБАЛ В РОТ ГРУЗИНА

a guest
Oct 15th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.34 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3.  
  4. int power(int num, int step)
  5. {
  6.     int ans = 1;
  7.     if (step != 0)
  8.         while (step > 0)
  9.         {
  10.             ans *= num;
  11.             step--;
  12.         }
  13.     else
  14.         return 1;
  15. }
  16.  
  17. int fromNto10(int num, int base) // N < 10
  18. {
  19.     int ans = 0;
  20.     int i = 0;
  21.     while (num > 0)
  22.     {
  23.         ans += (num % 10) * power(base,i);
  24.         i++;
  25.         num /= 10;
  26.     }
  27.     return ans;
  28. }
  29.  
  30.  
  31.  
  32. int main()
  33. {
  34.     int base, tmp = 0, k = 0;
  35.     char num[11];
  36.     scanf("%d", &base);
  37.     scanf("%s", &num);
  38.  
  39.     for (int i = 0; i < 6 && num[i] != '\0'; i++)
  40.     {
  41.         k++;
  42.     }
  43.     //printf("%d\n", k);
  44.     for (int i = 0; i < k; i++)
  45.         tmp += (num[i] - '0') * power(10, k-i-1);
  46.     bool flag = true;
  47.     for (int i = 0 ; i < k; i ++)
  48.     {
  49.         if (num[i] - '0' > base && flag)
  50.         {
  51.             flag = false;
  52.             break;
  53.         }
  54.     }
  55.     if (!flag && (base != 2 || base != 8 || base != 10))
  56.         printf("Number is Wrong.");
  57.     else if (base == 10)
  58.     {
  59.         printf("%d %d\n", base, tmp);
  60.         printf("%x", tmp);
  61.     }
  62.     else if (base == 2 || base == 8)
  63.     {
  64.         printf("%d %d\n", base, tmp);
  65.         printf("%x", fromNto10(tmp, base));
  66.     }
  67.     else
  68.         printf("Base is wrong.");
  69.     //printf("%d", tmp);
  70.     return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement