Hi! I've recently started learning C and I've been getting stuck on the basic tasks cuz I keep overcomplicating them T-T Could anyone please help me with this specific task?
Problem Statement
You have a digit sequence S of length 4. You are wondering which of the following formats S is in:
- YYMM format: the last two digits of the year and the two-digit representation of the month (example:
01for January), concatenated in this order - MMYY format: the two-digit representation of the month and the last two digits of the year, concatenated in this order
If S is valid in only YYMM format, print YYMM; if S is valid in only MMYY format, print MMYY; if S is valid in both formats, print AMBIGUOUS; if S is valid in neither format, print NA.
Constraints
- S is a digit sequence of length 4.
Sample Input 1
1905
Sample Output 1
YYMM
May XX19 is a valid date, but 19 is not valid as a month. Thus, this string is only valid in YYMM format.
Sample Input 2
0112
Sample 2
AMBIGUOUS
Both December XX01 and January XX12 are valid dates. Thus, this string is valid in both formats.
Sample Input 3
1700
Sample Output 3
NA
Neither 0 nor 17 is valid as a month. Thus, this string is valid in neither format.
The code I wrote for this is:
#include <stdio.h>
int main(){
int S;
scanf("%d", &S);
int p1 = S/100;
int p2 = S%100;
if (p1!=0 && p1<=12){
if(p2!=0 && p2<=12){
printf("AMBIGUOUS");
}
else if (p2>=13){
printf("MMYY");
}
else{
printf("NA");
}
}
else if (p1>=13){
if(p2!=0 && p2<=12){
printf("YYMM");
}
else {
printf("NA");
}
}
return 0;
}
It passed the 7 checks in the system, but failed on the 8th and I have no idea what kind of values are on the 8th check... Thanks to anyone for reading this far!
Thank you so much for your time! Holy shit you went deep there, even optimized it😭 I'm 4ever grateful, gotta go try it, be back with results!