1. 程式人生 > >牛客網-最大的奇約數

牛客網-最大的奇約數

最大的奇約數

奇偶化-遞迴解法 

import java.util.*;
public class Main {
    public static void main(String args[]){
        Scanner in=new Scanner(System.in);
        while(in.hasNext()) {
            long N = in.nextLong();
            System.out.println(f(N));
        }

    }
    public static long f(long num){
        if(num==1)
            return 1;
        long sum=0;
        for(long i=1;i<=num;i+=2){
            sum+=i;
        }
        return sum+f(num/2);
    }
}

奇偶化-公式解法

import java.util.*;
public class Main {
    public static void main(String args[]){
        Scanner in=new Scanner(System.in);
        while(in.hasNext()) {
            long N = in.nextLong();
            long sum=0,temp;
            for(long i=N;i>=1;i=i/2){
                temp=(i+1)/2;
                sum+=temp*temp;
            }
            System.out.println(sum);
        }

    }
}