中级启示者
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
高级天翼
这道题你想复杂了
张恩泽在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图一张:
资深守护
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;