中级天翼
4964 日历本
经验值:1600 时间限制:1000毫秒
题目描述 Description
我们经常需要使用日历,所以需要一个能生成日历的程序。
先要求你写一个程序,只需要输入年份,就能生成正确的日历。
输入描述 Input Description
输入包含多组测试数据。每组输入一个整数Y(1800<=Y<=2100),表示公元年份。
输出描述 Output Description
对于每组输入,输出对应的日历本。选中下面的输出样例查看具体的输出格式,注意空格的输出。
样例输入 Sample Input
2010
样例输出 Sample Output
以下是0分代码,可样例明明都过了
请大佬帮忙看一下……
#include<bits/stdc++.h>
#pragma GCC optimize(3)
using namespace std;
int f(int y,int m,int d){
if(m==1||m==2)m+=12,y--;
int c=y/100;
y=y-100*c;
int w=int(c/4-2*c+y+int(y/4)+(26*(m+1)/10)+d-1);
return (w%7+7)%7+1;
}
int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
void judge(int y){
if((y%4==0&&y%100!=0||y%400==0))mon[2]++;
}
int main(){
int n;
cin>>n;
judge(n);
cout<<" "<<n<<" \n\n";
cout<<" January February March \n";
cout<<"Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa\n";
int w1=f(n,1,1),m1=1,d1=1;
int w2=f(n,2,1),m2=2,d2=1;
int w3=f(n,3,1),m3=3,d3=1;
for(int i=1;i<=(w1-1)*3+1;i++){
cout<<' ';
}
cout<<d1<<' ';
while(w1<7){
w1++;
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=(w2-1)*3+1;i++){
cout<<' ';
}
cout<<d2<<' ';
while(w2<7){
w2++;
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=(w3-1)*3+1;i++){
cout<<' ';
}
cout<<d3<<' ';
while(w3<7){
w3++;
cout<<setw(2)<<++d3<<' ';
}
cout<<endl;
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d3<<' ';
}
cout<<' ';
cout<<endl;
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d3<<' ';
}
cout<<' ';
cout<<endl;
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d3<<' ';
}
cout<<' ';
cout<<endl;
bool f1=0,f2=0,f3=0;
for(int i=1;i<=7;i++){
if(d1>=mon[1]){
f1=1;
}
if(f1){
cout<<" ";
continue;
}
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
if(d2>=mon[2]){
f2=1;
}
if(f2){
cout<<" ";
continue;
}
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
if(d3>=mon[3]){
f3=1;
}
if(f3){
cout<<" ";
continue;
}
cout<<setw(2)<<++d3<<' ';
}
cout<<' ';
cout<<endl;
if(!f1){
for(int i=1;i<=7;i++){
if(d1>=mon[1]){
f1=1;
}
if(f1){
cout<<" ";
continue;
}
cout<<setw(2)<<++d1<<' ';
}
}else{
cout<<" ";
}
if(!f2){
cout<<' '<<' ';
for(int i=1;i<=7;i++){
if(d2>=mon[2]){
f2=1;
}
if(f2){
cout<<" ";
continue;
}
cout<<setw(2)<<++d2<<' ';
}
}else{
cout<<" ";
}
if(!f3){
cout<<' '<<' ';
for(int i=1;i<=7;i++){
if(d3>=mon[3]){
f3=1;
}
if(f3){
cout<<" ";
continue;
}
cout<<setw(2)<<++d3<<' ';
}
}else{
cout<<" ";
}
cout<<endl;
cout<<" April May June \n";
cout<<"Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa\n";
w1=f(n,4,1),m1=4,d1=1;
w2=f(n,5,1),m2=5,d2=1;
w3=f(n,6,1),m3=6,d3=1;
for(int i=1;i<=(w1-1)*3+1;i++){
cout<<' ';
}
cout<<d1<<' ';
while(w1<7){
w1++;
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=(w2-1)*3+1;i++){
cout<<' ';
}
cout<<d2<<' ';
while(w2<7){
w2++;
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=(w3-1)*3+1;i++){
cout<<' ';
}
cout<<d3<<' ';
while(w3<7){
w3++;
cout<<setw(2)<<++d3<<' ';
}
cout<<endl;
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d3<<' ';
}
cout<<' ';
cout<<endl;
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d3<<' ';
}
cout<<' ';
cout<<endl;
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d3<<' ';
}
cout<<' ';
cout<<endl;
f1=0,f2=0,f3=0;
for(int i=1;i<=7;i++){
if(d1>=mon[4]){
f1=1;
}
if(f1){
cout<<" ";
continue;
}
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
if(d2>=mon[5]){
f2=1;
}
if(f2){
cout<<" ";
continue;
}
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
if(d3>=mon[6]){
f3=1;
}
if(f3){
cout<<" ";
continue;
}
cout<<setw(2)<<++d3<<' ';
}
cout<<' ';
cout<<endl;
if(!f1){
for(int i=1;i<=7;i++){
if(d1>=mon[4]){
f1=1;
}
if(f1){
cout<<" ";
continue;
}
cout<<setw(2)<<++d1<<' ';
}
}else{
cout<<" ";
}
if(!f2){
cout<<' '<<' ';
for(int i=1;i<=7;i++){
if(d2>=mon[5]){
f2=1;
}
if(f2){
cout<<" ";
continue;
}
cout<<setw(2)<<++d2<<' ';
}
}else{
cout<<" ";
}
if(!f3){
cout<<' '<<' ';
for(int i=1;i<=7;i++){
if(d3>=mon[6]){
f3=1;
}
if(f3){
cout<<" ";
continue;
}
cout<<setw(2)<<++d3<<' ';
}
}else{
cout<<" ";
}
cout<<endl;
cout<<" July August September \n";
cout<<"Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa\n";
w1=f(n,7,1),m1=7,d1=1;
w2=f(n,8,1),m2=8,d2=1;
w3=f(n,9,1),m3=9,d3=1;
for(int i=1;i<=(w1-1)*3+1;i++){
cout<<' ';
}
cout<<d1<<' ';
while(w1<7){
w1++;
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=(w2-1)*3+1;i++){
cout<<' ';
}
cout<<d2<<' ';
while(w2<7){
w2++;
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=(w3-1)*3+1;i++){
cout<<' ';
}
cout<<d3<<' ';
while(w3<7){
w3++;
cout<<setw(2)<<++d3<<' ';
}
cout<<endl;
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d3<<' ';
}
cout<<' ';
cout<<endl;
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d3<<' ';
}
cout<<' ';
cout<<endl;
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d3<<' ';
}
cout<<' ';
cout<<endl;
f1=0,f2=0,f3=0;
for(int i=1;i<=7;i++){
if(d1>=mon[7]){
f1=1;
}
if(f1){
cout<<" ";
continue;
}
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
if(d2>=mon[8]){
f2=1;
}
if(f2){
cout<<" ";
continue;
}
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
if(d3>=mon[9]){
f3=1;
}
if(f3){
cout<<" ";
continue;
}
cout<<setw(2)<<++d3<<' ';
}
cout<<' ';
cout<<endl;
if(!f1){
for(int i=1;i<=7;i++){
if(d1>=mon[7]){
f1=1;
}
if(f1){
cout<<" ";
continue;
}
cout<<setw(2)<<++d1<<' ';
}
}else{
cout<<" ";
}
if(!f2){
cout<<' '<<' ';
for(int i=1;i<=7;i++){
if(d2>=mon[8]){
f2=1;
}
if(f2){
cout<<" ";
continue;
}
cout<<setw(2)<<++d2<<' ';
}
}else{
cout<<" ";
}
if(!f3){
cout<<' '<<' ';
for(int i=1;i<=7;i++){
if(d3>=mon[9]){
f3=1;
}
if(f3){
cout<<" ";
continue;
}
cout<<setw(2)<<++d3<<' ';
}
}else{
cout<<" ";
}
cout<<endl;
cout<<" October November December \n";
cout<<"Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa\n";
w1=f(n,10,1),m1=10,d1=1;
w2=f(n,11,1),m2=11,d2=1;
w3=f(n,12,1),m3=12,d3=1;
for(int i=1;i<=(w1-1)*3+1;i++){
cout<<' ';
}
cout<<d1<<' ';
while(w1<7){
w1++;
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=(w2-1)*3+1;i++){
cout<<' ';
}
cout<<d2<<' ';
while(w2<7){
w2++;
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=(w3-1)*3+1;i++){
cout<<' ';
}
cout<<d3<<' ';
while(w3<7){
w3++;
cout<<setw(2)<<++d3<<' ';
}
cout<<endl;
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d3<<' ';
}
cout<<' ';
cout<<endl;
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d3<<' ';
}
cout<<' ';
cout<<endl;
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
cout<<setw(2)<<++d3<<' ';
}
cout<<' ';
cout<<endl;
f1=0,f2=0,f3=0;
for(int i=1;i<=7;i++){
if(d1>=mon[10]){
f1=1;
}
if(f1){
cout<<" ";
continue;
}
cout<<setw(2)<<++d1<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
if(d2>=mon[11]){
f2=1;
}
if(f2){
cout<<" ";
continue;
}
cout<<setw(2)<<++d2<<' ';
}
cout<<' ';
for(int i=1;i<=7;i++){
if(d3>=mon[12]){
f3=1;
}
if(f3){
cout<<" ";
continue;
}
cout<<setw(2)<<++d3<<' ';
}
cout<<' ';
cout<<endl;
if(!f1){
for(int i=1;i<=7;i++){
if(d1>=mon[10]){
f1=1;
}
if(f1){
cout<<" ";
continue;
}
cout<<setw(2)<<++d1<<' ';
}
}else{
cout<<" ";
}
if(!f2){
cout<<' '<<' ';
for(int i=1;i<=7;i++){
if(d2>=mon[11]){
f2=1;
}
if(f2){
cout<<" ";
continue;
}
cout<<setw(2)<<++d2<<' ';
}
}else{
cout<<" ";
}
if(!f3){
cout<<' '<<' ';
for(int i=1;i<=7;i++){
if(d3>=mon[12]){
f3=1;
}
if(f3){
cout<<" ";
continue;
}
cout<<setw(2)<<++d3<<' ';
}
}else{
cout<<" ";
}
return 0;
}
缔造者
缔造者之神