【题目描述】
平衡数:如果正整数 x 的每一位数字 d 恰好在 x 中出现了 d 次,则认为 x 是平衡数。例如 x=122,其中
对于百位数 d=1,其中 1 在 122 中总共出现了 1 次,符合条件;
对于十位数 d=2,其中 2 在 122 中总共出现了 2 次,符合条件;
对于个位数 d=2,其中 2 在 122 中总共出现了 2 次,符合条件;
因为 122的每一位都符合条件,所以 122是平衡数。
现在给出两个正整数l,r(l≤r),请帮忙求出l∼r中所有平衡数的和。
【输入】
输入共一行,两个以空格隔开的正整数 l,r(1≤l≤r≤10000)。
【输出】
输出共一行,一个整数,表示l∼r 中所有平衡数的和。
【输入样例】
1 25
【输出样例】
23
3297:【例50.3】 平衡数
#include
using namespace std;
int main()
{
int l,r,t,q,sum=0,flag;
cin>>l>>r;
for(int i=l;i<=r;i++)
{
int a[10]={0};
t=i;
while(t>0)
{
q=t%10;
a[q]++;
t=t/10;
}
flag=1;
for(int j=0;j<10;j++)
{
if((a[j]!=j&&a[j]!=0)||a[0]!=0)
{
flag=0;
break;
}
}
if(flag==1)
sum=sum+i;
}
cout<<sum;
return 0;
}