2022-1-17 每日一题 NewCodere KY50 与7无关的数

题目描述:


链接:https://www.nowcoder.com/practice/776d401bf86d446fa783f0bef7d3c096

解题思路:

解法1:更高效

除去与7有关的数,即为与7无关的数。关键在于如何判断“与7有关的数”已知n<100,所以“与7有关”可以简化条件为
n%7==0(被7整除) || n%10==7(个位为7) || n/10==7(十位为7)

知识点总结:

1.C语言多组输入模板:!=EOF

while(scanf("%d",&n)!=EOF){}

易错点总结:

1.输入新的一组数据时,首先要赋初值sum=0

代码如下:

#include <stdio.h>
int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        int sum=0;
        for(int i=0;i<=n;i++){
            if(i%7!=0&&i%10!=7&&i/10!=7){
                sum+=i*i;
            }
        }
        printf("%d",sum);
    }
}

解法2:更通用

和解法1不同,使用自定义Seven()函数判断正整数n中是否包含数字7(n取值无范围限制)。
补:被7整除的条件可以一起放入函数Seven();也可以放在if条件中写出

优化代码总结:

1.视情况,函数可使用bool类型,满足条件处返回true,都不满足则返回false

代码如下:

#include<iostream>
#include<cstdio>

using namespace std;

bool Seven(int x)
{
    if(x % 7 == 0) return true;
    else{
        while(x != 0){
        if(x % 10 == 7) return true;
            x /= 10;
        }
        return false;
    }
}

int main()
{
    int n,sum;
    while(cin >> n){
        sum = 0;
        for(int i = 0; i <= n; ++i){
            if(!Seven(i)){
                sum += i * i;
            } 
        }
        cout << sum << endl;
    }
    return 0;
}
posted @ 2022-01-17 23:06  Jane8  阅读(132)  评论(0)    收藏  举报