int gcd(int a, int b)
{
int c;
while (b)
{
c = b;
b = a % b;
a = c;
}
return a;
}
int YxPollLivePlayBusiness::GetWidgetCD(vector<widgetInfo> _widgetVec, int _iSize)
{
int i = 0;
int res = _widgetVec[0].iWidget;
for (i = 1; i < _iSize; i++)
res = gcd(res, _widgetVec[i].iWidget);
return res;
}
int YxPollLivePlayBusiness::GetWidgetMaX(vector<widgetInfo> _widgetVec, int size)
{
int i = 0;
int res = _widgetVec[0].iWidget;
for (i = 1; i < size; i++)
{
if (res < _widgetVec[i].iWidget)
res = _widgetVec[i].iWidget;
}
return res;
}
int YxPollLivePlayBusiness::GetWidgetSum(vector<widgetInfo> _widgetVec, int size)
{
int i = 0;
int res = 0;
for (i = 0; i < size; i++)
res += _widgetVec[i].iWidget;
return res;
}
void YxPollLivePlayBusiness::getPollList()
{
int index = -1;
int curweight = 0;
if (m_widgetVec.size() > 0)
{
m_iCdVaule = GetWidgetCD(m_widgetVec, m_widgetVec.size());
m_iWidgetMax = GetWidgetMaX(m_widgetVec, m_widgetVec.size());
m_iWidgetSum = GetWidgetSum(m_widgetVec, m_widgetVec.size());
}
for (auto i = 0; i < m_iWidgetSum; i++)
{
getWidgeValue( &(index), &(curweight));
m_pollLivePlayList.push_back(m_widgetVec[index].strCodeId);
}
}
int YxPollLivePlayBusiness::getWidgeValue(int *pIndex, int *pCurweight)
{
while (1)
{
*pIndex = (*pIndex + 1) %( m_widgetVec.size());
if (*pIndex == 0)
{
*pCurweight = *pCurweight - m_iCdVaule;
if (*pCurweight <= 0)
{
*pCurweight = m_iWidgetMax;
if (*pCurweight == 0)
{
return -1;
}
}
}
if (m_widgetVec[*pIndex].iWidget >= *pCurweight)
{
return *pIndex;
}
}
}