fork(2) download
  1. #include <stdio.h>
  2.  
  3. unsigned long long get_num(char *n, int* flag, int *count){
  4. char c;
  5. unsigned long long numb = 0;
  6. int i = 0, max;
  7. while ((c=n[i])!='.' && n[i]!='\0' ){
  8. if(c>='0' && c<='9')
  9. numb = numb*10 + (c-'0');
  10. ++i;
  11. }
  12. if (n[i]=='.'){
  13. i++;
  14. while (!(*flag)){
  15. if(!(*flag) && n[i]>='0' && n[i]<='9'){
  16. numb = numb*10 + (n[i]-'0');
  17. (*count)++;
  18. }
  19. else if ((n[i]!='\0')) {
  20. numb = numb*10;
  21. (*count)++;
  22. }
  23. if(n[i]=='\0')
  24. *flag = 1;
  25. i++;
  26. }
  27. }
  28. return numb;
  29. }
  30.  
  31. int main(void) {
  32. // your code here
  33. int i, t, div, flag, count;
  34. unsigned long long num;
  35. char avg[15];
  36. scanf("%d",&t);
  37. for (i=0; i<t ; ++i) {
  38. div = 1;
  39. flag = count = 0;
  40. scanf("%s",avg);
  41. num = get_num(avg, &flag, &count);
  42. if (flag==0)
  43. printf("1\n");
  44. else {
  45. while (count>0) {
  46. div *= 10;
  47. count--;
  48. }
  49. while ((num % 10) == 0) {
  50. div /= 10;
  51. num /= 10;
  52. }
  53. while ((num>5) && ((num % 5) == 0) && ((div % 5) == 0)) {
  54. num /= 5;
  55. div /= 5;
  56. }
  57. while ((num>2) && ((num % 2) == 0) && ((div % 2) == 0)) {
  58. num /= 2;
  59. div /=2;
  60. }
  61. printf("%d\n",div);
  62. }
  63. }
  64. return 0;
  65. }
  66.  
Success #stdin #stdout 0s 2116KB
stdin
1
1000000.9876
stdout
2500