标题
幸运数字
问题描述
输入N个M位的整数.0<N<20.0<M<10如果M位数的最高位和最低位之和为M,并且该数是3的倍数,则这个M 位数为幸运数,输出N个M位数中的所有幸运数。若没有幸运数则输出-1。
输入说明
第一行输入整数N,M。第二行输入N个M位整数。
输出说明
输出N个M位数字中的幸运数字,数字之间以空格间隔,或者输出-1.
输入样例
4 5
12342 33552 53210 30022
输出样例
33552
这个题的难点在于不用数组,那么该怎么存储呢?其实根本不用存储,题目要求的一行输入所有数字,只要不敲回车都会认为数字还未读取完毕,所以一下子输入所有的数字后可以输出幸运数字!
#include<stdio.h>
int main(){
int n,m,num;//三个输入
int one,last;//第一位和最后一位
int i;
int flag=0;//建立旗帜来判断是否为幸福数
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++){//建立大循环来进行输入
scanf("%d",&num);
last=num%10;//取模计算数字的最低位
one=num;
for(int j=1;j<m;j++){//循环除法,取出数字最高位
one/=10;
}
if(one+last==m&&num%3==0){//判断是否为幸福数字
printf("%d ",num);
flag=1;//如果是,树立起旗帜
}
}
if(flag==0){//如果输入大循环结束后都没有旗帜竖起,那么没有幸运数字!
printf("-1");
}
}