标签:i++ 链接 acm mes c++ https 进制 while color
题目链接:https://ac.nowcoder.com/acm/problem/15979
题目思路:找规律
我们可以发现
f[n]的值就是n转化为二进制中的1的个数
而且f[2^t-1]=t
n<10^18 2^t-1<10^18 t<64
所以f[n]的值不会大于64
另外第一次出现n的值可以通过求f[n]的值t 求出下标2^t-1
#include<bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while(t--) { long long n,x=0; cin>>n; while(n){ //x为二进制n中1的个数 n=n&(n-1); x++; } long long num=1; for(int i=0;i<x;i++) num=2*num; cout<<x<<" "<<num-1<<endl; } }
标签:i++ 链接 acm mes c++ https 进制 while color
原文地址:https://www.cnblogs.com/Aiahtwo/p/11407544.html