Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <string.h>
- int gt(char a) {
- if (a >= '0' && a <= '9')
- {
- return (a - '0');
- }
- if (a >= 'a' && a <= 'f')
- {
- return (10 + a - 'a');
- }
- return -1;
- }
- char tg(int a) {
- if (a >= 0 && a <= 9)
- {
- return (a + '0');
- }
- if (a >= 10 && a <= 15)
- {
- return (a - 10 + 'a');
- }
- return 0;
- }
- int sol0() {
- int a, b;
- scanf("%d", &a);
- scanf("%d", &b);
- if (a < 2 || a > 16 || b < 2 || b > 16)
- {
- printf("bad input");
- return 0;
- }
- char d[20];
- scanf("%s", d);
- int f = 0, s = 0, sd = 1, n = strlen(d);
- bool z = 0;
- for (int i = 0; i < n; i++)
- {
- if (d[i] == '.')
- {
- z = 1;
- }
- else {
- if (!z)
- {
- f *= a;
- int y = gt(d[i]);
- if (y == -1 || y >= a)
- {
- printf("bad input");
- return 0;
- }
- f += y;
- }
- else
- {
- s *= a;
- sd *= a;
- int y = gt(d[i]);
- if (y == -1 || y >= a)
- {
- printf("bad input");
- return 0;
- }
- s += y;
- }
- }
- }
- n = 0;
- char cc[20] = "";
- int j = 0;
- if (f == 0) {
- cc[0] = 0;
- j++;
- }
- while (f != 0)
- {
- cc[j] = tg(f % b);
- f /= b;
- j++;
- }
- for (int i = strlen(cc) - 1; i >= 0; i--)
- {
- printf("%c", cc[i]);
- }
- if (s != 0)
- {
- printf(".");
- int u = 0;
- while (s != 0 && u < 12)
- {
- s *= b;
- if (!(s % sd))
- {
- printf("%c", tg(s / sd));
- s = 0;
- }
- else
- {
- if (s / sd > 0)
- {
- printf("%c", tg(s / sd));
- }
- else
- {
- printf("0");
- }
- s %= sd;
- }
- u++;
- }
- }
- return 0;
- }
- int main() {
- sol0();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement