每日一道算法题之幸运数字
一、题目描述
如果把一个数字十进制表示的奇数位和偶数位分别相加得到的和相同,小小就认为它是一个幸运的数字。对于给定的 a 和 b,小小希望你求出 a,a+1,a+2,...,b 中幸运数字的数量。
C++程序要求输入输出示例如下:
cpp
输入: 1 100 输出:9
二、思路
用for循环去枚举每一个数,然后通过取余和除法操作得到每一位上的数,奇数位相加,偶数位相加,最后进行比较。
三、C++代码
cpp
#include<bits/stdc++.h>
using namespace std;
//幸运数字
int main(){
int a,b;
cin>>a>>b;
int temp;
int flag;
int number=0;
int odd,even;
for(int i=a;i<=b;i++){ //从a到b枚举每一个数
temp=i,odd=0,even=0,flag=0;
while(temp>0){
if(flag==0){ //取出这个数的奇数位 ,用flag实现奇偶位的交替
odd+=temp%10;
flag=1;
}else{ //取出这个数的偶数位
even+=temp%10;
flag=0;
}
temp/=10;
}
if(odd==even){
number++;
}
}
cout<<number;
}