数字之和为x的整数
题目描述
请在n个数中,找出各个位的数字和为x的数,求出满足条件的数有多少个,他们的总和是多少,并对满足条件的数按照由小到大排序。 例如:x=13,那么数85、373就是满足条件的数,因为8+5=13、3+7+3=13。
输入
第一行有两个整数,分别表示x和n(n<=10000)
第二行有n个整数,用空格隔开(这些数在1~9999之间)
输出
第一行有两个整数,分别代表满足条件的数的总和及总个数
第二行输出满足条件的数,并按照由小到大排序
样例输入复制
13 5
373 85 67 18 49
样例输出复制
574 4
49 67 85 373
#include<bits/stdc++.h>
using namespace std;
int main() {
int a[10001];
int i,x,n,sum=0,num=0;
cin>>x>>n;
for(i = 0; i < n; i++) {
cin>>a[i];
}
for(i = 0; i < n; i++) {
int q = a[i] / 1000;
int b = a[i] / 100 % 10;
int s = a[i] / 10 % 10;
int g = a[i] % 10;
if(q + b + s + g == x) {
sum = sum + a[i];
num++;
} else {
a[i]=0;
}
}
cout<<sum<<" "<<num<<endl;
sort(a,a+n);
for(i=0; i<n; i++) {
if(a[i]!=0) {
cout<<a[i]<<" ";
}
}
}