一种报数游戏是从1开始连续报数,如果报到7的倍数(7,14,21,28……)或者包含数字7的数(7,17,27,37……)就用拍手代替这个数而不能报出。假设你连续听到m声拍手,问造成你听到m声拍手的第一下拍手所代表的数是几?例如,你听到了两次连续的拍手,最小的可能这两次拍手是27和28,因此输出27。 输入m, 输出这m次连续的拍手第一下所代表的最小可能的数。
#include <stdio.h>
#define MUL 7 //倍数
#define DREP 2 //重复次数
int function(int m)
{
int minnum=0;
int i=MUL;
int time=0;
int itemp=0;
int flag=0;
int letter=0;
int rem=0;
if(m<=0)
{
return minnum;
}
while(i<2147483647)
{
itemp=i;
rem=i%MUL;
while(itemp>0)
{
letter=itemp%10;
if(letter==MUL)
{
flag=1;
break;
}
itemp=itemp/10;
}
if(rem==0||flag==1)
{
time++;
flag=0;
if(time==1)
{
minnum=i;
}
if(time==m)
{
break;
}
}
else
{
minnum=0;
time=0;
flag=0;
}
i++;
}
return minnum;
}
void main(void)
{
int min=0;
int rep=DREP;
min=function(rep);
printf(" the min num is %d \r\n",min);
return;
}