#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int num[10],sum; //使用数组表示0-9十个数字
for(int i=0;i<10;i++){ //数组赋值
num[i]=2021;
}
for(sum=1;sum<20210;sum++){ ///根据题目得知 答案不会超过四位数
int a=sum/100; //前两位数字
int b=sum%100; //后两位数字
switch (a/10){ //第一个数字 后面的switch同理 后三位数字
case 0: num[0]--;break;
case 1: num[1]--;break;
case 2: num[2]--;break;
case 3: num[3]--;break;
case 4: num[4]--;break;
case 5: num[5]--;break;
case 6: num[6]--;break;
case 7: num[7]--;break;
case 8: num[8]--;break;
case 9: num[9]--;break;
}
switch (a%10){
case 0: num[0]--;break;
case 1: num[1]--;break;
case 2: num[2]--;break;
case 3: num[3]--;break;
case 4: num[4]--;break;
case 5: num[5]--;break;
case 6: num[6]--;break;
case 7: num[7]--;break;
case 8: num[8]--;break;
case 9: num[9]--;break;
}
switch (b/10){
case 0: num[0]--;break;
case 1: num[1]--;break;
case 2: num[2]--;break;
case 3: num[3]--;break;
case 4: num[4]--;break;
case 5: num[5]--;break;
case 6: num[6]--;break;
case 7: num[7]--;break;
case 8: num[8]--;break;
case 9: num[9]--;break;
}
switch (b%10){
case 0: num[0]--;break;
case 1: num[1]--;break;
case 2: num[2]--;break;
case 3: num[3]--;break;
case 4: num[4]--;break;
case 5: num[5]--;break;
case 6: num[6]--;break;
case 7: num[7]--;break;
case 8: num[8]--;break;
case 9: num[9]--;break;
}
if(sum<10){ //数字小于10 前三位数字为0 补回去 后面同理
num[0]+=3;
}
else if(sum<100){
num[0]+=2;
}
else if(sum<1000){
num[0]+=1;
}
//若有 某个数字小于等于0 则结束
if(num[0]<=0||num[1]<=0||num[2]<=0||num[3]<=0||num[4]<=0||num[5]<=0||num[6]<=0||num[7]<=0||num[8]<=0||num[9]<=0){
break;
}
}
printf("%d\n",sum);
return 0;
}
【蓝桥杯】卡片
最新推荐文章于 2024-06-03 15:46:21 发布