fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include<math.h>
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7.  
  8. long int b[12],out[5],i,j,a,t,ct=2,p,q,sum,m=0,flag,pra=1,x,hui,u;
  9. for(i=0;i<12;i++)
  10. b[i]=pow(2,i);
  11. scanf("%ld",&t);
  12. for(i=0;i<t;i++)
  13. {
  14. hui=2;
  15. ct=0;
  16. pra=1;
  17. u=0;
  18. scanf("%ld",&p);
  19. if(p==4096)
  20. printf("2\n");
  21. else
  22. {
  23. if(p>4096)
  24. {
  25. u=p/2048;
  26. ct=ct+u;
  27. p=p%2048;
  28. }
  29. for(j=0;j<=12;j++)
  30. {
  31. if(p==b[j])
  32. {
  33. printf("%ld\n",ct+1);
  34. hui=1;
  35. }
  36. }
  37.  
  38. if(hui==1)
  39. flag=1;
  40. else
  41. {
  42.  
  43. for(j=0;j<=12;j++)
  44. {
  45.  
  46.  
  47. if(p>b[j])
  48. flag=1;
  49. else
  50. {
  51. a=j-1;
  52. j=13;
  53. }
  54.  
  55. }
  56. x=a-1;
  57. ct=ct+2;
  58. while(pra==1)
  59. {
  60.  
  61. sum=b[a]+b[x];
  62. if(sum==p)
  63. pra=2;
  64. else
  65. {
  66.  
  67. if(sum>p)
  68. x=x-1;
  69. else
  70. {
  71. ct++;
  72. b[a]=b[a]+b[x];
  73. x=x-1;
  74. }
  75. }
  76. }
  77.  
  78. printf("%ld\n",ct);
  79. }
  80. }
  81. }
  82. //scanf("%d",&q);
  83. return 0;
  84. }
  85.  
Success #stdin #stdout 0.01s 1680KB
stdin
1
3000
stdout
1