分析:认真读题,一开始以为条件是末尾是7或者是7的倍数,又看了遍题才发现是含7就不行(人家还给咱点了红点,淦!真就没看到。)
#include <stdio.h>
int hanshu(int n);
int main ()
{
int n,i=1,t=0;
int a[4]={0}; //a数组记录跳过的次数
scanf("%d",&n);
while(t!=n)//t是报数的数目
{
if(hanshu(i))
{
a[0]++;i++;
}
else {
i++;t++; //这里t才加 因为这里才报数了
if(t==n) break;
}
if(hanshu(i)) //直接重复四遍。
{
a[1]++;i++;
}
else {
i++;t++;
if(t==n) break;
}
if(hanshu(i))
{
a[2]++;i++;
}
else {
i++;t++;
if(t==n) break;
}
if(hanshu(i))
{
a[3]++;i++;
}
else {
i++;t++;
if(t==n) break;
}
}
for(i=0;i<4;i++)
{
printf("%d\n",a[i]);
}
return 0 ;
}
int hanshu(int n)
{
if(n%7==0) return 1;
while(1)
{
if(n%10==7) return 1;
else {
if(n<10) return 0;
else n/=10;
}
}
return 0;
}
解法平常,思路由上图所得。