Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //package main;
- import java.util.Scanner;
- import java .math.BigInteger;
- class Main {
- public static void main(String[] args) {
- int T,cas,lst;
- long n,mask,val,mask1;
- Scanner in= new Scanner(System.in);
- //T=in.nextInt();
- for(cas=1;;cas++)
- {
- n=in.nextLong();
- if(n<0)break;
- if(n<3)
- {
- System.out.printf("Case %d: %d\n",cas, 0);
- continue;
- }
- lst=0;
- BigInteger ans=new BigInteger("0");
- for(long i=62;i>=0;i--)
- {
- mask=(long)1<<i;
- mask=(long)(mask & n);
- if(mask!=0)
- {
- if(i>=2)val=(long)1<<(i-2);
- else val=0;
- BigInteger A=BigInteger.valueOf(val);
- //System.out.println(A);
- BigInteger B=BigInteger.valueOf((long)i-1);
- //System.out.println(B);
- A=A.multiply(B);
- //System.out.println(A);
- ans=ans.add(A);
- //System.out.println(ans);
- if(lst==1)
- {
- mask=(long)1<<(i+1);
- n=(long)((long)mask |(long) n);
- mask1=(long)1<<i;
- mask=(long)((long)mask |(long) mask1);
- val=(long)n-mask+1;
- A=BigInteger.valueOf(val);
- ans=ans.add(A);
- // System.out.println(ans);
- mask=(long)1<<(i+1);
- n=(long)((long)n ^ (long)mask);
- }
- mask=(long)1<<i;
- n=(long)((long)n ^ (long)mask);
- //System.out.println(n);
- lst=1;
- }
- else lst=0;
- }
- System.out.printf("Case %d: ", cas);
- System.out.println(ans);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement