郑轻 2267 问题 J: Scholarship 2018郑州轻工业学院第十届ACM程序设计大赛暨河南高校邀请赛(正式赛)答案+解析+代码

问题 J: Scholarship

时间限制: 1 Sec  内存限制: 128 MB
提交: 433  解决: 144
[ 提交][ 状态][ 讨论版][命题人: admin]

题目描述

小浩今年拿到了国家奖学金,本来很高兴的事,可小浩却默默不乐,原来是不愿请大家吃饭,小浩查了一下银行卡,一看还有8位数,于是嘴角向上微翘,冷笑一声,说想让我请客,先能回答出我的问题来。小浩的问题是给定一个8位的正整数,如果能判断出这8位数是否能组成一个日期的年月日(年份范围0000~9999),就可以请客,同学们还等什么,加油啦!

输入

输入有多行,每行一个8位的正整数。

输出

对于输入的每个整数,如果能组合成一个日期,输出“yes",否则,输出”no",每个输出占一行。

样例输入

 
  
32872313
10000000

样例输出

 
  
yes
no

思路:其实就需要考虑月日就可以了
         代码注意以下几种情况:
                一. 没有零月零日(8个数里最少有两个非零) 二.最小的数字为0,第二小的数只要小于三就行(0X月0X日或 0X月1X日0X月2X日)  三.最小的数字为1,第三小的数只要小于三就行(将上面的月份换为11月或12月,月份用两个小于三的数组成,日再用一个小于三的)
代码如下:
#include
using namespace std;
int arr[10];
int main()
{
    int n;
    while(cin >> n){
    for(int i=0;i<8;i++)
    {
        arr[i]=n%10;
        n=n/10;
    }
    sort(arr,arr+8);
    if(arr[6]==0) cout << "no" << endl;
    else if(arr[0]==0&&arr[1]<3) cout << "yes" << endl;
    else if(arr[0]==1&&arr[2]<3) cout << "yes" << endl;
    else cout << "no" << endl;
    }
    return 0;
}


你可能感兴趣的:(水题)