某年某月有几天
时间:0.1s 空间:128M
题目描述:
闰年问题:已知某年某月,计算该月有几天。
输入格式:
输入一行,包含两个正整数year,month ,代表年和月
输出格式:
输出一行,包含一个整数。
样例输入:
2004 2样例输出:
29
#include <stdio.h>
int main() {
int year, month;
scanf("%d%d", &year, &month);
switch (month) {
case 2:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
printf("29");
} else {
printf("28");
}
break;
case 4:
case 6:
case 9:
case 11:
printf("30");
break;
default:
printf("31");
}
return 0;
}
Maoge的游戏
时间:1s 空间:256M
题目描述
Maoge和Maoge233玩一个游戏。
他有两堆石子,每次可以选择任意一堆取任意个(至少一个),当一个人没有石子可取时,就输了。
Maoge先取,问最后谁能赢。假设都是以最优策略。
输入格式
一行两个数,x,y分别表示两堆石子的数量
输出格式
maoge或者maoge233。
样例输入:
1 2样例输出:
maoge约定:
x,y<=100000
#include <stdio.h>
int main() {
int x, y;
scanf("%d%d", &x, &y);
if (x == y) {
printf("maoge233");
} else {
printf("maoge");
}
return 0;
}
maoge的硬币
【题目描述】
maoge的桌子上有4枚硬币,有些正面朝上,有些反面朝上。现在maoge想请你帮他把这些硬币都变成同一面朝上,但是你每次能且只能翻三个硬币,请你求出最少翻转次数。
【数据格式】
输入一行,四个数字0/1,表示每个硬币的初始状态。
输出一个数,表示答案。
样例输入:
1 0 1 1
样例输出:
1
#include <stdio.h>
int main() {
int coins[4];
scanf("%d%d%d%d", &coins[0], &coins[1], &coins[2], &coins[3]);
int positive = coins[0] + coins[1] + coins[2] + coins[3];
int flips = positive == 4 || positive == 0 ;
if(flips==1){
printf("0");
}else if(positive==3||positive==1){
printf("1");
}else{
printf("2");
}
return 0;
}
自动找人系统
【题目描述】
给定三个参数a,b,c,表示年,月,日,(不考虑闰年)表示一个时间节点。他要找出在两个时间节点之间的时间(包括两个时间节点本身)。现在给定两个时间节点和一个时间,他要判断这个时间是否在这个时间段之中。
【数据格式】
输入三行,三个时间,每行有三个数,表示年月日。前两行表示两个时间节点(不一定按照第一个小于第二个的顺序给出),最后一行是这个时间发生的时间。保证合法
输出一个“Yes”或者“No”表示是否在这个时间段之中。
样例输入:
2007 1 1 2007 12 31 2007 3 22样例输出:
Yes
#include <stdio.h>
int calc_days(int y, int m, int d) {
int days_in_month[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int days = y * 365 + d, i;
for (i = 1; i < m; ++i) {
days += days_in_month[i];
}
return days;
}
int main() {
int a[3], b[3], c[3],i;
for (i = 0; i < 3; i++) {
scanf("%d%d%d", &a[i], &b[i], &c[i]);
}
int days_a = calc_days(a[0], b[0], c[0]);
int days_b = calc_days(a[1], b[1], c[1]);
int days_c = calc_days(a[2], b[2], c[2]);
int start = (days_a < days_b) ? days_a : days_b;
int end = (days_a > days_b) ? days_a : days_b;
printf("%s", (days_c >= start && days_c <= end) ? "Yes" : "No");
return 0;
}
年龄计算
时间:1s 空间:256M
题目描述
编写程序,输入某人的生日(年、月、日),并输入当前的日期(年、月、日),输出他的实际年龄(周岁),若生日超过当前日期,输出“-1”。
输入格式
6个整数,分别表示该学生的生日(年、月、日)和当前的日期(年、月、日)
输出格式
一个整数.
样例输入
1990 2 28 2000 3 4样例输出
10约定
保证输入数据是合法的日期
#include <stdio.h>
int main() {
int y1, m1, d1, y2, m2, d2,i;
scanf("%d%d%d%d%d%d", &y1, &m1, &d1, &y2, &m2, &d2);
int y = y2 - y1;
if (y1 > y2 || (y1 == y2 && (m1 > m2 || (m1 == m2 && d1 > d2)))) {
printf("-1");
} else {
if(m2-m1>0||m2-m1==0&&d2-d1>=0){
y=y;
}else{
y-=1;
}
printf("%d", y );
}
return 0;
}