3297:【例50.3】 平衡数《信息学奥赛一本通编程启蒙(C++版)》

3297:【例50.3】 平衡数《信息学奥赛一本通编程启蒙(C++版)》

【题目描述】
平衡数:如果正整数 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;
 } 

你可能感兴趣的:(c++,开发语言)