问题标题: 酷町堂:3903 吉利数之和

0
0
已解决
李显晨
李显晨
中级启示者
中级启示者

3903   吉利数之和经验值:800

题目描述 Description

钻石王老五非常喜欢5这个数字,他认为所有与5相关的数(若一个正整数的各个位中有一位为数字5,或者该正整数能够被5整除,则称这个数为与5相关的数)都是他的吉利数。现给定一个正整数n(1<=n<=1000000),求不大于n的所有吉利数之和。

输入描述 Input Description

一个正整数n

输出描述 Output Description

一个正整数,表示不大于n的所有吉利数之和

样例输入 Sample Input

18

样例输出 Sample Output

30

#include<iostream>
#include<algorithm>
#include<cmath>
#include<string>
#include<cstdio>
using namespace std;
int sum;
bool jl(long long i) {
    if(i%5!=0) {
        while(i){
            if(i%10==5)  return true;
            i/=10;
        }
    }
    else return true;
    return false;
}
int main(){
	long long n;
	cin>>n;
	for(long long i=1;i<=n;i++){
		if(jl(i)) sum+=i;
	}
	cout<<sum;
    return 0;
}

本人10分代码,求大佬找错!!!

李显晨在2020-10-01 20:13:19追加了内容

ding

李显晨在2020-10-02 13:42:03追加了内容

ding


0
已采纳
张恩泽
张恩泽
高级天翼
高级天翼

这道题你想复杂了

张恩泽在2020-10-02 15:51:04追加了内容

这个第15行的else return true是什么意思,这一行可以去掉

张恩泽在2020-10-02 15:57:12追加了内容
bool qw (int n) {
	while (n) {
		if (n % 10 == 5) {
			return true;
		}
		n /= 10;
	}
	return false;
}

函数部分这样写,不需要在函数里就判断i % 5是否等于0了

遍历n的for循环里这样写:

if (qw (i) || i % 5 == 0) {
			sum += i; 
		}

最后输出sum,即可完美AC

 

PS:这个n是不需要定义成long long 类型的,因为它最大才一百万,而int的最大范围是二十一亿

    但是,这个累加的sum必须定义成long long 类型,别问为什么,定义成int类型就是十分

张恩泽在2020-10-02 16:04:50追加了内容

附10分WA图一张:

 

再附100分AC图一张:

0
杜文博
杜文博
资深守护
资深守护

int sum;
bool jl(long long i) {
        while(i){
            if(i%10==5)  return true;
            i/=10;
    }
    return false;
}
int main(){
    long long n;
    cin>>n;
    for(long long i=1;i<=n;i++)
    {
        if(jl(i)) sum+=i;
        if(i%5==0)
        {
            sum+=i;
        } 
    }
    cout<<sum;

0
0
0
我要回答