Advertisement
farsid

Untitled

Jul 30th, 2012
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. //package main;
  2. import java.util.Scanner;
  3. import java .math.BigInteger;
  4.  
  5.  
  6.  
  7. class Main {
  8.  
  9.  
  10. public static void main(String[] args) {
  11. int T,cas,lst;
  12. long n,mask,val,mask1;
  13. Scanner in= new Scanner(System.in);
  14. //T=in.nextInt();
  15. for(cas=1;;cas++)
  16. {
  17. n=in.nextLong();
  18. if(n<0)break;
  19. if(n<3)
  20. {
  21. System.out.printf("Case %d: %d\n",cas, 0);
  22. continue;
  23. }
  24. lst=0;
  25. BigInteger ans=new BigInteger("0");
  26. for(long i=62;i>=0;i--)
  27. {
  28. mask=(long)1<<i;
  29. mask=(long)(mask & n);
  30. if(mask!=0)
  31. {
  32. if(i>=2)val=(long)1<<(i-2);
  33. else val=0;
  34. BigInteger A=BigInteger.valueOf(val);
  35. //System.out.println(A);
  36. BigInteger B=BigInteger.valueOf((long)i-1);
  37. //System.out.println(B);
  38. A=A.multiply(B);
  39. //System.out.println(A);
  40. ans=ans.add(A);
  41. //System.out.println(ans);
  42. if(lst==1)
  43. {
  44. mask=(long)1<<(i+1);
  45. n=(long)((long)mask |(long) n);
  46. mask1=(long)1<<i;
  47. mask=(long)((long)mask |(long) mask1);
  48. val=(long)n-mask+1;
  49. A=BigInteger.valueOf(val);
  50. ans=ans.add(A);
  51. // System.out.println(ans);
  52. mask=(long)1<<(i+1);
  53. n=(long)((long)n ^ (long)mask);
  54. }
  55. mask=(long)1<<i;
  56. n=(long)((long)n ^ (long)mask);
  57. //System.out.println(n);
  58. lst=1;
  59. }
  60. else lst=0;
  61. }
  62. System.out.printf("Case %d: ", cas);
  63. System.out.println(ans);
  64. }
  65.  
  66. }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement