4 条题解
-
1
C++
折磨了我好久好久,已经是历史遗留产物了......
代码已经过处理,使冗长的代码变得清晰明了
#include <bits/stdc++.h> using namespace std; bool LeapYear(int y) { //闰年判断 if((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) { return true; } else { return false; } } int Days(int y, int m) { //计算某年某月有几天 if(m == 4 || m == 6 || m == 9 || m == 11) { return 30; } if(m == 2) { if(LeapYear(y)) return 29; else return 28; } else return 31; } void Print(int w, int d) { //输出 cout << " Sun Mon Tue Wed Thu Fri Sat" << endl; if(w != 6) { for(int i = 0; i <= w; i++) cout << " "; } int k; if(w == 6) k = -1; else k = w; for(int i = 1; i <= d; i++) { k += 1; if(k == 7) { //每一个星期一行 cout << endl; k = 0; }; printf("%4d", i); } } int main(){ int y, m, d; cin >> y >> m; int w; d = Days(y, m); if(m == 1 || m == 2) { // 基姆拉尔森计算公式的坑点 y -= 1; m += 12; } w = (1+2\*m+3\*(m+1)/5+y+y/4-y/100+y/400) % 7; //计算1日是星期几 Print(w, d); return 0; }
-
0
#include<bits/stdc++.h> using namespace std; int y,m,s,w,sm[13]={0,31,28,31,30,31,30,31,31,30,31,30,31},d[13][35],x; int main(){ cin>>y>>m; cout<<" Sun Mon Tue Wed Thu Fri Sat\n"; s=y-1+((y-1)/4)-((y-1)/100)+((y-1)/400)+1; w=s%7; if((y%4==0&&y%100!=0)||y%400==0){ sm[2]=29; } for(int i=1;i<=12;i++){ for(int j=1;j<=sm[i];j++){ d[i][j]=w; w++; if(w>6){ w=0; } //cout<<s<<endl; } } for(int i=1;i<=d[m][1];i++){ cout<<" "; } for(int i=1;i<=sm[m];i++){ if(i/10==0){ cout<<' '; } cout<<" "<<i; if(d[m][i]==6){ cout<<endl; } } return 0; }
-
0
C++ :
#include <iostream> #include <cstdio> using namespace std; int days[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int isleap(int year); int main() { int year,month; scanf("%d%d",&year,&month); int sum=0,k=1;//365%7 for(int i=1; i<=year-1; i++){ if(isleap(i)){ sum+=2; }else{ sum+=1; } } sum%=7; if(isleap(year)&& month>2){sum++;} for(int i=1; i<month; i++){ sum+=days[i-1]; } sum%=7; int day=days[month-1]; if(isleap(year)&& month==2){day++;} printf(" Sun Mon Tue Wed Thu Fri Sat\n"); if(sum<6){ for(int i=0; i<=sum; i++){ printf(" "); } } for(int i=1; i<=day; i++){ printf("%4d",i); if(++sum%7==6){printf("\n");} } return 0; } int isleap(int year) { if(year%400==0 || (year%4==0 && year%100!=0)){ return 1; }else{ return 0; } }
- 1
信息
- ID
- 108
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 115
- 已通过
- 37
- 上传者