bool checknum(int n)
{
if(0 == (n % 7))
return 1;
while(n > 0)
{
if(7 == (n % 10))
return 1;
n /= 10;
}
return 0;
}
#if 0
int main()
{
int i;
bool flag = false;
int j = 0;
int pos = 0;
int k = 0;
int a[Len] = {0};
for(i = 0; i < Len; i++)
a[i] = i + 1;
while(k < Len)
{
if(a[pos])
{
j++;
if(checknum(j))
{
cout << a[pos] << endl;
if(k == (Len - 1))
{
cout << a[pos] << endl;
}
a[pos] = 0;
k++;
}
}
pos++;
pos = pos % Len;
}
cout << "Res: " << j << endl;
return 0;
}
#endif
#if 0
int main()
{
vector<int> vec;
int n = 1;
for(int i = 0; i < Len; i++)
vec.push_back(i + 1);
int sizeVec = Len;
vector<int>::iterator iterBeg = vec.begin();
vector<int>::iterator iterEnd;
while(sizeVec >= 2)
{
iterEnd = vec.end();
if(iterBeg >= iterEnd)
iterBeg = vec.begin();
if(checknum(n))
{
//cout << *iterBeg << endl;
iterBeg = vec.erase(iterBeg);
sizeVec--;
n++;
continue;
}
iterBeg++;
n++;
}
cout << *iterBeg << endl;
return 0;
}
#endif
struct num
{
int id;
struct num *next;
};
#if 1
int main()
{
struct num* head = (struct num*)malloc(sizeof(struct num));
head->id = 0;
struct num* cur = head;
for(int i = 1; i < Len; ++i)
{
cur->next = (struct num *)malloc(sizeof(struct num));
cur = cur->next;
cur->id = i;
}
cur->next = head;
struct num* pre = head;
cur = head->next;
int a = 2;
while(pre != cur)
{
if(checknum(a))
{
cout << cur->id << endl;
pre->next = cur->next;
free(cur);
}
else
{
pre = cur;
}
cur = pre->next;
++a;
}
int pos = cur->id;
free(cur);
cout << "Res: " << pos << endl;
}