问题 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<bits/stdc++.h>
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;
}