链接:ac.nowcoder.com/acm/problem…
来源:牛客网
题目描述
求出[a,b]区间内有多少个数数位之和为5的倍数
输入描述:
输入一行包含两个整数a,b (1<= a<= b<=1000000)
输出描述:
输出一个整数
示例1
输入
10 20
输出
2
说明
数位dp
14和19的数位和为5和10,符合条件
核心思想是首先取到个位,然后加到位数和里面,最后自除截断个位的数。
核心代码
//定义i等于a,用来从a到b循环
for(int i = a;i <= b;i ++){
//定义你等于i,用来获取各个位数
int n = i;
//定义个位
int g;
//定义位数和
int sum = 0;
//如果n不小于等于0,就以此循环,因为每次需要取到个位的数,然后截断个位
while(n > 0){
//取到个位的数
g = n % 10;
//然后加到位数和里面
sum += g;
//最后截断个位的数
n /= 10;
}
}
代码
#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin >> a >> b;
int ans = 0;
for(int i = a;i <= b;i ++){
int n = i;
int g;
int sum = 0;
while(n > 0){
g = n % 10;
sum += g;
n /= 10;
}
if(sum % 5 == 0) {
ans++;
}
}
cout << ans;
return 0;
}