f(n)即为n的二进制表达式中1的数量,f(n)第一次出现在第2^f(n)-1项
#include <iostream>
using namespace std;
long long cnt_1(long long n){
long long cnt=0;
while(n){
cnt+=n&1;
n>>=1;
}
return cnt;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin>>t;
while(t--){
long long n;
cin>>n;
long long k=cnt_1(n);
long long p=(1LL<<k)-1;
cout<<k<<" "<<p<<"\n";
}
return 0;
}

京公网安备 11010502036488号