Codeforces A. Candies

题目链接 https://codeforces.com/contest/1343/problem/A

在这里插入图片描述
在这里插入图片描述
AC代码

#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    
    
	int n,a,i,j,x;
	cin>>n;
	for(i=1;i<=n;i++)
	{
    
    
		cin>>a;
		for(j=2;;j++)
		{
    
    
			x=(int)(pow(2,j)-1);
			if(!(a%x))
			{
    
    
				cout<<a/x<<endl;
				break;
			}
		}
	}
 
	return 0;
}


分析:求整数x满足x+2x+4x+⋯+2^(k-1)x=n.
即x*(1+2+4+⋯+2^(k-1))=n,
也即x*(2^k-1)=n.
因为k>1,所以k从2开始枚举,直到满足n是2^k-1的整数倍。

猜你喜欢

转载自blog.csdn.net/weixin_46155777/article/details/105911256
今日推荐