与7无关的数

GitHub跳转原题关系图返回列表

枚举 1 至 n,排除 7 的倍数和含数字 7 的数后累加平方。

OJ: noi_openjudge

题目 ID: ch0105-39

难度:入门

标签:枚举字符串整除python

日期: 2026-07-30 23:01

题意

求不超过 nn 的所有“与 7 无关”的正整数的平方和。与 7 相关指能被 7 整除,或十进制表示中含有数字 7

思路

枚举 11nnnumber % 7 != 0 判断是否不是 7 的倍数,"7" not in str(number) 判断数位中是否没有 7;两个条件都成立时累加平方。

代码

Python代码

python
limit = int(input())
total = 0

for number in range(1, limit + 1):
    if number % 7 != 0 and "7" not in str(number):
        total += number * number

print(total)

C++代码

cpp
#include <cstdio>


int main(){
    int sum = 0;
    int i,n;
    scanf("%d",&n);
    for (i=1;i<=n;i++){
        if( i % 7 == 0) continue;
        bool flag= false;
        int t= i;
        while( t != 0){
            int a = t % 10;
            if( a == 7){
                flag = 1;
                break;
            }
            t /= 10;
        }
        if( flag) continue;
        sum += i*i;
    }
    printf("%d\n",sum);
    return 0;
}

复杂度

nn 的十进制位数为 dd,时间复杂度为 O(nd)O(nd),额外空间复杂度为 O(d)O(d)

总结

数位存在性判断可直接转成字符串,逻辑比手动反复取余更紧凑。