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;
}

浙公网安备 33010602011771号