【题目描述】
平衡数:如果正整数 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≤100001)。
【输出】
输出共一行,一个整数,表示l∼r 中所有平衡数的和。
【输入样例】
1 25
【输出样例】
23
【AC代码】
#include<bits/stdc++.h> using namespace std; int main() { int cnt=0,x,y,b; cin>>x>>y; for(int i=x;i<=y;i++){ int t=i,a[10]={},s=0; while(t!=0){ a[t%10]++; t/=10; } b=i; while(b!=0){ if((b%10)!=a[b%10]){ s=1; break; } b/=10; } if(s==0){ cnt+=i; } } cout<<cnt; return 0; }