1450 - 数字之和为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<iostream>
using namespace std;
int main(){
int x,n,g,s,b,q,w,z=0;
cin>>x>>n;
int a[100000],brr[100000];
for(int i=0;i<n;i++){
cin>>a[i];
}
int cnt=0,sum=0;
for(int i=0;i<n-1;i++){
for(int j=0;j<n-i-1;j++){
if(a[j]>a[j+1]){
int t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(int i = 0;i<n;i++){
g=a[i]%10000%1000%100%10;
s=a[i]%1000/10%10;
b=a[i]%1000/100;
q=a[i]%10000/1000;
w=a[i]/10000;
if(g+s+b+q+w==x){
cnt++;
sum+=a[i];
brr[z]=a[i];
z++;
}
}
cout<<sum<<" "<<cnt<<endl;
for(int i=0;i<cnt;i++){
cout<<brr[i]<<" ";
}
return 0;
}
费了我5分钟才做出来的,注意输出的时候循环次数是计数器(cnt)