【题目描述】
平衡数:如果正整数 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;
}
文章讲述了如何用C++编写代码,计算125到给定范围内的平衡数之和,通过遍历并检查每位数字的出现次数来筛选平衡数。
3012

被折叠的 条评论
为什么被折叠?



