#include <iostream>
using namespace std;
int main(){
int year,month,day;
while(cin>>year>>month>>day){
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int date=0;
if((year%4==0&&year%100!=0)||year%400==0){
a[1]=29;
}
for(int i=0;i<month-1;i++){
date+=a[i];
}
cout<<date+day<<endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int monthtab[2][13]={//预设每月天数
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
};
int IsLeapYear(int y){//判断是否为闰年
if(((y%4==0)&&(y%100!=0))||y%400==0){
return 1;
}else{
return 0;
}
}
int main(){
int y,m,d;
while(scanf("%d%d%d",&y,&m,&d)!=EOF){
int num=0;
int ans=IsLeapYear(y);
for(int i=0;i<m;i++){
num+=monthtab[ans][i];//如果为闰年,ans=1,正好加的是monthtab数组的闰年那一行
}
num+=d;
cout<<num<<endl;
}
return 0;
} using namespace std;
#include <iostream>
#include <cstring>
bool judge(int y){
if(y%4 == 0){
if(y % 100 == 0 and y%400){
return false;
}
return true;
}
return false;
}
int main(){
int sum[12] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 335}
int y, m, d, ans;
while(cin>>y>>m>>d){
if(m>2 and judge(y))ans = 1;
else ans = 0;
ans += sum[m-1];
cout<<ans<<endl;
}
return 0;
} #include<bits/stdc++.h>
using namespace std;
int md[13][2] = {{0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},
{31,31},{30,30},{31,31},{30,30},{31,31} };
int getDayNo(int y, int m, int d)
{
int f = (y % 400 == 0) || ((y % 4 == 0) && y % 100);
int ans = 0;
for(int i = 1;i < m; i++) ans += md[i][f];
return (ans += d);
}
int main()
{
int y, m, d;
while(cin >> y >> m >> d)
{
cout << getDayNo(y, m, d) << '\n';
}
return 0;
}
提交了好多遍都没有AC,发现原来是变量没有初始化为0;长个记性吧。
#include<stdio.h>
int main(){
int year,month,day,res=0;
int a[13] ={0,31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d%d%d",&year,&month,&day);
for(int i = 1;i<month;i++)
res +=a[i];
res+=day;
if((year%4==0&&year%100!=0 || year%400 == 0)&&month>2)
res=res+1;
printf("%d\n",res);
}
#include<iostream>
using namespace std;
bool is366(int year) {
if(year % 400 == 0) return true;
else if(year%100 == 0) return false;
else if(year%4 == 0) return true;
else return false;
}
int main() {
int month365[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int month366[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int year, month, day;
while(cin>>year>>month>>day) {
int res=0;
int *month_days=is366(year)?month366:month365;
for(int i=0; i<month-1; ++i) res+=*(month_days+i);
res+=day;
cout<<res<<endl;
}
} #include<iostream>
using namespace std;
bool isLeapyear(int y){
if((y%4==0&&y%100!=0)||y%400==0){
return true;
}
else{
return false;
}
}
int main(){
int y,m,d;
int monthday[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int sumday[13]={0};//数组如果不初始化会产生意想不到的结果
for(int i=1;i<=12;i++){//计算在第i个月之前月份的总天数
for(int j=1;j<i;j++){
sumday[i]+=monthday[j];
}
}
while(cin>>y>>m>>d){
int day=0;
day=sumday[m]+d;
if(isLeapyear(y)&&m>=3){
day++;
}
cout<<day<<endl;
}
return 0;
}
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
int year = scanner.nextInt();
int mouth = scanner.nextInt();
int day = scanner.nextInt();
LocalDate date = LocalDate.of(year, mouth, day);
LocalDate newYear = LocalDate.of(year, 1, 1);
System.out.println(newYear.until(date, ChronoUnit.DAYS)+1);
}
}
} #include <iostream>
using namespace std;
int main()
{
const int month_day[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
int year,month,day;
while(cin >> year >> month >> day){
bool isLeapYear = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
for(int i = 0; i < month - 1; ++i)
day += month_day[i];
cout << (month < 3 ? day : day + isLeapYear) << endl;
}
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int days[]={31,28,31,30,31,30,31,31,30,31,30,31};
int year,mon,day,i;
while(cin>>year>>mon>>day)
{
int sum=0;
if((year%4==0&&year%100!=0)||year%400==0)
{
days[1]=29;
for(i=0;i<mon-1;i++)
{
sum+=days[i];
}
sum+=day;
}
else
{
days[1]=28;
for(i=0;i<mon-1;i++)
{
sum+=days[i];
}
sum+=day;
}
cout<<sum<<endl;
}
return 0;
}
import java.time.LocalDate;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt())
{
LocalDate date = LocalDate.of(sc.nextInt(), sc.nextInt(), sc.nextInt());
System.out.println(date.getDayOfYear());
}
sc.close();
}
}
#include<iostream>
using namespace std;
int SmallYear[13] ={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int BigYear[13] ={0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool isBigYear(int year)
{
if((year % 100 != 0 && year % 4 == 0) ||(year % 100 == 0 && year % 400 == 0))
return true;
return false;
}
int main()
{
int year, month, day;
cin >> year >> month >> day;
int ret = 0;
if(isBigYear(year))
{
for(int i = 1; i < month; i++)
ret = ret + BigYear[i];
ret = ret + day;
}
else
{
for(int i = 1; i < month; i++)
ret = ret + SmallYear[i];
ret = ret + day;
}
cout << ret << endl;
}
#include<iostream>
#include<cstring>
#define ISLEAP(x) (x%4==0&&x%100!=0)||x%400==0?1:0
int YofM[13][2] = { 0,0,31,31,28,29,31,31,30,30,31,31,30,30, 31,31,31,31,30,30,31,31,30,30,31,31
};
struct Data { int data; int month; int year; Data() { data = 1; month = 0; year = 0; } void nextdata() { data++; if (data>YofM[month][ISLEAP(year)]) { month++; data = 1; if (month>12) { year++; month = 1; } }//if }
};
int Daycount[3001][13][32];
int main() { Data D; int num = 0; while (D.year <= 3000) { Daycount[D.year][D.month][D.data] = num; D.nextdata(); num++; }//while int d, m, y; while (std::cin >> y >> m >> d) { int i = Daycount[y][m][d] - Daycount[y][1][1]; std::cout << i+1; }//while return 0;
}
#include<stdio.h>
int main (int argc, char *argv[]){
int daysOfMonth[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int y,m,d,days,i;
for(;~scanf("%d %d %d",&y,&m,&d);)
for(days=d,daysOfMonth[2]=(y%4==0&&y%100!=0) || (y%400==0)?29:28,i=0; i<m && (days += daysOfMonth[i] ); i==m-1?printf("%d\n",days):1,++i);
} #include<iostream>
#include<cstdio>
using namespace std;
#define ISYEAP(x) x%100!=0 && x%4==0 || x%400==0 ? 1 : 0 // 判断x 年是否为闰年
// 输入范围:年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)
// 3000 年 从 公元0年开始算相距天数也在int 的范围内
int num[3010][14][32] = {0}; // 存储每天到公元0年1月1日的天数
// 存储平年闰年的每个月有多少天
int days[13][2] = {
0,0,
31,31,
28,29,
31,31,
30,30,
31,31,
30,30,
31,31,
31,31,
30,30,
31,31,
30,30,
31,31
};
// 存储日期的结构体
struct Date
{
int Day;
int Month;
int Year;
void nextDay() { // 计算下一个日期
Day ++;
if(Day > days[Month][ISYEAP(Year)]) {
// 如果超过的当月的最大天数则Month ++;
Day = 1;
Month ++;
if(Month > 12) {
Month = 1;
Year ++;
}
}
}
};
int main()
{
Date tmp;
int cnt = 0; // 计数器
tmp.Day = 1;
tmp.Month = 1;
tmp.Year = 0;
while(tmp.Year != 3001) {
num[tmp.Year][tmp.Month][tmp.Day] = cnt;
tmp.nextDay();
cnt++;
}
int y, m, d;
while(cin >> y >> m >> d)
{
cout << num[y][m][d] - num[y][1][1] + 1 << endl;
}
return 0;
}
#include <stdio.h>
const int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main(){
for(int y,m,d;~scanf("%d%d%d",&y,&m,&d);printf("%d\n",d)){
for(int i=1;i<m;d+=month[i++]);
if (y%400==0 || (y%100 && y%4==0)) d+=(m>2?1:0);
}
return 0;
}
import datetime
while True:
try:
a,b,c=map(int,input().split())
dd=datetime.datetime(a,b,c)
print(dd.strftime("%j").lstrip("0"))
except:
break
import datetime
while True:
try:
print(datetime.datetime(*map(int,input().split())).strftime("%j").lstrip("0"))
except:
break
我就想问,还有哪种语言比这个更简单。。
java就是啰嗦
package com.speical.first;
import java.util.Scanner;
/**
* 第几天,记录前缀,记录贡献
* 分模块,一目了然
* @author special
* @date 2017年12月22日 下午10:36:58
*/
public class Pro18 {
private static final int[] days = {
0,31,59,90,120,151,181,212,243,273,304,334,365};
private static boolean isLeapYear(int year){
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}
public static int getDays(int year, int month, int day){
return days[month - 1] + day + (isLeapYear(year) && month > 2 ? 1 : 0);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
while(input.hasNext()){
int year = input.nextInt();
int month = input.nextInt();
int day = input.nextInt();
System.out.println(getDays(year,month,day));
}
}
}