牛客網-最大的奇約數
阿新 • • 發佈:2018-11-10
奇偶化-遞迴解法
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); } } }