Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.34 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <limits.h>
  3.  
  4. struct RoundResult
  5. {
  6. long long value;
  7. int status;
  8. };
  9.  
  10. struct RoundResult iround(long long value, int prec) {
  11. struct RoundResult st;
  12. st.status = 0;
  13. if(prec == 0) {
  14. st.value = value;
  15. st.status = 0;
  16. return st;
  17. }
  18. long long p = 1;
  19. for(int i = 0; i < prec; ++i) {
  20. p *= 10;
  21. }
  22. if(value >= 0) {
  23. if (value % p < (p/2)) {
  24. st.value = value / p * p;
  25. return st;
  26. } else {
  27. if ((value) / p * p > LLONG_MAX - p){
  28. st.value = 0;
  29. st.status = 1;
  30. return st;
  31. }
  32. st.value = value / p * p + p;
  33. return st;
  34. }
  35. } else {
  36. p = -p;
  37. if (value % p >= (p/2)) {
  38. st.value = value / p * p;
  39. return st;
  40. } else {
  41. if (value/p * p < LLONG_MIN - p) {
  42. st.value = 0;
  43. st.status = -1;
  44. return st;
  45. }
  46. st.value = value / p * p + p;
  47. return st;
  48. }
  49. }
  50. }
  51.  
  52. int main(int argc, char *argv[]) {
  53. long long value;
  54. int prec;
  55. scanf("%lld %d", &value, &prec);
  56. struct RoundResult st = iround(value,prec);
  57. printf("%lld %d\n",st.value, st.status);
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement