Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <math.h>
  4.  
  5. #define MIN_ERROR 1e-5
  6.  
  7. double A[10][31];
  8. long long B[10][31];
  9.  
  10. void buildTable()
  11. {
  12. int i,j;
  13. for(i = 0 ; i <= 9;++i)
  14. {
  15. for(j = 1; j <= 30;++j)
  16. {
  17. double m = 1 - pow(2, -i-1);
  18. long long e = pow(2, j) - 1;
  19. double t = log10(m) + log10(2) * e;
  20. B[i][j] = t / 1;
  21. A[i][j] = pow(10, t - B[i][j]);
  22. }
  23. }
  24. }
  25.  
  26. int main()
  27. {
  28. buildTable();
  29. char s[100];
  30. int i, j;
  31. int ok;
  32. double a;
  33. int b;
  34. while(scanf("%s", s) != EOF)
  35. {
  36. if(strcmp(s, "0e0") == 0)
  37. {
  38. break;
  39. }
  40.  
  41. for(i = 0 ; i < strlen(s);++i)
  42. {
  43. if(s[i] == 'e')
  44. {
  45. s[i] = ' ';
  46. break;
  47. }
  48. }
  49.  
  50. sscanf(s, "%lf %d", &a, &b);
  51. ok = 0;
  52. for(i = 0 ; i <= 9;++i)
  53. {
  54. for(j = 1; j <= 30;++j)
  55. {
  56. if(B[i][j] == b && fabs(a - A[i][j]) < MIN_ERROR)
  57. {
  58. printf("%d %d\n", i, j);
  59. ok = 1;
  60. break;
  61. }
  62. }
  63. if(ok)
  64. {
  65. break;
  66. }
  67. }
  68. }
  69. return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement