码迷,mamicode.com
首页 > 其他好文 > 详细

CodeForces - 1225C p-binary(思维)

时间:2019-11-09 21:19:46      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:long   names   ++i   int   count   problems   cout   fine   一个   

题目链接: http://codeforces.com/problemset/problem/1225/C

思路

把所有的p移回左边得到一个数, 此时它应该有多个\({2^k}\) 组成 然后我们就可以数出这个数的二进制及有多少个1 判断它是不是符合题意

Code

#include <bits/stdc++.h>
 
using namespace std;
#define LL long long
#define popcount __builtin_popcount
 
int main() {
#ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
#endif
    int n, p;
    cin >> n >> p;
    for (int i = 1; i < 100000000; ++i) {
        int num = n - p * i;
        if(num < i) break;
        if (i >= popcount(num)) {
            cout << i << endl;
            return 0;
        }
    }
    cout << "-1" << endl;
    return 0;
}

CodeForces - 1225C p-binary(思维)

标签:long   names   ++i   int   count   problems   cout   fine   一个   

原文地址:https://www.cnblogs.com/YY666/p/11827845.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!