zoukankan      html  css  js  c++  java
  • B. The Child and Set

    http://codeforces.com/contest/437/problem/B

    等差数列1 + 2*k的lowbit()为2^0

    等差数列2 + 4*k的lowbit()为2^1

    等差数列4 + 8*k的lowbit()为2^2

    等差数列8 + 16*k的lowbit()为2^3

     1 import java.util.ArrayList;
     2 import java.util.Scanner;
     3 
     4 public class Main {
     5 
     6     public static void main(String[] args) {
     7         Scanner in = new Scanner(System.in);
     8         int sum = in.nextInt(), limit = in.nextInt();
     9 
    10         int[] pow = new int[30];pow[0] = 1;
    11         for (int i = 1; i < pow.length; i++) pow[i] = pow[i - 1] * 2;
    12 
    13         int maxbit = Integer.toBinaryString(sum).length();
    14         ArrayList<Integer> ans = new ArrayList<>();
    15         for (int i = maxbit; i >= -1; i--) {
    16             if (i == -1) {
    17                 if (sum == 0) {
    18                     System.out.println(ans.size());
    19                     for (int ii : ans) System.out.print(ii + " ");
    20                 } else System.out.println(-1);
    21                 return;
    22             }
    23             for (int j = 0; pow[i] + pow[i + 1] * j <= limit; j++) {
    24                 if (sum - pow[i] >= 0) {
    25                     sum -= pow[i];
    26                     ans.add(pow[i] + pow[i + 1] * j);
    27                 }
    28             }
    29         }
    30     }
    31 }
  • 相关阅读:
    015-面向对象
    017-错误和异常
    019-File
    020-OS
    021-模块
    022-标准库
    数据库目录
    数据库 概念详解
    MySQL 基础
    MySQL 数据库操作
  • 原文地址:https://www.cnblogs.com/towerbird/p/11405194.html
Copyright © 2011-2022 走看看