题目链接
解题思路
题目要求根据给出的n来求出k和x,由{x+2x+4x+⋯+2^{k−1}}x=n可知
x * {2^k}-1 = n(使用等比数列求和公式推出)
又因为题目描述 {n(3 \le n \le 10^9)}
所以说可以确定 {k(2 \le k \le 30)}
最后循环暴力计算x即可
AC代码
//https://codeforces.com/contest/1343/problem/A
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
int t;
scanf("%d",&t);
for(int i=0;i<t;i++){
ll n;
scanf("%lld",&n);
for(int i=1;i<30;i++){
ll num = (2<<i)-1;
if(n%num==0){
printf("%lld\n",n/num);
break;
}
}
}
return 0;
}
Comments | 1 条评论
单号购买 快递购买 空包代发www.uudanhaowang.com