2830: 【例50.3】 平衡数
内存限制:64 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:19
解决:11
题目描述
平衡数:如果正整数 $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\sim r$中所有平衡数的和。
对于百位数 $d = 1$,其中 $1$ 在 $122$ 中总共出现了 $1$ 次,符合条件;
对于十位数 $d = 2$,其中 $2$ 在 $122$ 中总共出现了 $2$ 次,符合条件;
对于个位数 $d = 2$,其中 $2$ 在 $122$ 中总共出现了 $2$ 次,符合条件;
因为 $122$的每一位都符合条件,所以 $122$是平衡数。
现在给出两个正整数$l,r(l≤r)$,请帮忙求出$l\sim r$中所有平衡数的和。
输入
输入共一行,两个以空格隔开的正整数 $l,r$($1≤l≤r≤10000$)。
输出
输出共一行,一个整数,表示$l\sim r$ 中所有平衡数的和。
样例输入 复制
1 25
样例输出 复制
23
提示
#include<bits/stdc++.h> using namespace std; int a[15]={1,22,122,212,221,333,1333,3133,3313,3331,4444},l,r,sum; int main(){ cin>>l>>r; for(int i=0;i<=10;i++) if(a[i]>=l &&a[i]<=r) sum+=a[i]; cout<<sum; return 0; }