这个题的难度在中等,以为会比较复杂,但是试了下简单的暴力解法直接计算也是可以的,我想应该会有规律的,和位数有关,但是找规律发现约数和带七的数字会有重合,相比之下这种更简单

#include<stdio.h>
using namespace std;
int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        int count=0,tmp;
        for(int i=7;i<=n;i++){
            tmp=i;
            if(tmp%7==0){
                count++;
            }else{
                while(tmp){
                    if(tmp%10==7){
                        count++;
                        break;
                    }
                    tmp=tmp/10;
                }            
            }
        }
        printf("%d\n",count);        
    }

    return 0;
}