问题标题: 酷町堂:4964 WA 0分求助

0
0
已解决
蒋祖轩
蒋祖轩
资深守护
资深守护

题目链接: 酷町堂:4964

4964   日历本

经验值:2000

时间限制:1000毫秒

内存限制:128MB

题目描述 De**ion

我们经常需要使用日历,所以需要一个能生成日历的程序。
先要求你写一个程序,只需要输入年份,就能生成正确的日历。

输入描述 Input De**ion

输入包含多组测试数据。每组输入一个整数Y(1800<=Y<=2100),表示公元年份。

输出描述 Output De**ion

对于每组输入,输出对应的日历本。选中下面的输出样例查看具体的输出格式,注意空格的输出。

样例输入 Sample Input

复制

2010

样例输出 Sample Output

2010 January February March Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 1 2 3 4 5 6 1 2 3 4 5 6 3 4 5 6 7 8 9 7 8 9 10 11 12 13 7 8 9 10 11 12 13 10 11 12 13 14 15 16 14 15 16 17 18 19 20 14 15 16 17 18 19 20 17 18 19 20 21 22 23 21 22 23 24 25 26 27 21 22 23 24 25 26 27 24 25 26 27 28 29 30 28 28 29 30 31 31 April May June Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 1 1 2 3 4 5 4 5 6 7 8 9 10 2 3 4 5 6 7 8 6 7 8 9 10 11 12 11 12 13 14 15 16 17 9 10 11 12 13 14 15 13 14 15 16 17 18 19 18 19 20 21 22 23 24 16 17 18 19 20 21 22 20 21 22 23 24 25 26 25 26 27 28 29 30 23 24 25 26 27 28 29 27 28 29 30 30 31 July August September Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 1 2 3 4 5 6 7 1 2 3 4 4 5 6 7 8 9 10 8 9 10 11 12 13 14 5 6 7 8 9 10 11 11 12 13 14 15 16 17 15 16 17 18 19 20 21 12 13 14 15 16 17 18 18 19 20 21 22 23 24 22 23 24 25 26 27 28 19 20 21 22 23 24 25 25 26 27 28 29 30 31 29 30 31 26 27 28 29 30 October November December Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 1 2 3 4 5 6 1 2 3 4 3 4 5 6 7 8 9 7 8 9 10 11 12 13 5 6 7 8 9 10 11 10 11 12 13 14 15 16 14 15 16 17 18 19 20 12 13 14 15 16 17 18 17 18 19 20 21 22 23 21 22 23 24 25 26 27 19 20 21 22 23 24 25 24 25 26 27 28 29 30 28 29 30 26 27 28 29 30 31 31

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<list>
#include<queue>
#include<map>
#include<cstdlib>
#include<iomanip>
#include<stack>
#include<sstream>
#include<vector>
using namespace std;
int y,m,d;
int xq[13]={0,3};
string TMP="Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa";
int T=1800,T1=1,T2=1;
int month[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};
int yesd(int x){
    return x%4==0&&x%100!=0||x%400==0;
}
void ztx(int x){
    int ttmp=x*3-2;
    cout<<TMP<<endl;
    int T=0,T2=0,T3=0;
//  int cnt=xq[1]%7,cnt2=7-xq[1]%7;
    int cnt[10];
    cnt[1]=xq[ttmp]%7;
    cnt[2]=7-xq[ttmp]%7;
    cnt[3]=xq[ttmp+1]%7;
    cnt[4]=7-xq[ttmp+1]%7;
    cnt[5]=xq[ttmp+2]%7;
    cnt[6]=7-xq[ttmp+2]%7;
    bool flag=0,flag2=0;
    int pos=0;
    while(!(T==month[ttmp]&&T2==month[ttmp+1]&&T3==month[ttmp+2])){
        for(int i=1;i<=cnt[1];i++){
            cout<<"   ";
        }
        cnt[1]=0;
        for(int i=1;i<=cnt[2]&&T<month[ttmp];i++){
            cout<<setw(2)<<++T<<" ";
        }
        cnt[2]=7;
        if(T==month[ttmp]&&!flag2){
            int tmp=(xq[ttmp]+month[ttmp])%7-1;
            for(int i=1;i<=(6-tmp)%7;i++){
                cout<<"   ";
            }
            flag2=1;
        }else if(flag2){
            cout<<"                     ";
        }
        cout<<" ";
        for(int i=1;i<=cnt[3];i++){
            cout<<"   ";
        }
        cnt[3]=0;
        for(int i=1;i<=cnt[4]&&T2<month[ttmp+1];i++){
            cout<<setw(2)<<++T2<<" ";
        }
        cnt[4]=7;
        if(T2==month[ttmp+1]&&!flag){
            int tmp=(xq[ttmp+1]+month[ttmp+1])%7-1;
            for(int i=1;i<=(6-tmp)%7;i++){
                cout<<"   ";
            }
            flag=true;
        }else if(flag){
            cout<<"                     ";
        }
        cout<<" ";
        for(int i=1;i<=cnt[5];i++){
            cout<<"   "; 
        }
        cnt[5]=0;
        for(int i=1;i<=cnt[6]&&T3<month[ttmp+2];i++){
            cout<<setw(2)<<++T3<<" ";
        }
        cnt[6]=7;
        cout<<endl;
        pos++;
    }
    for(int i=pos;i<6;i++){
        cout<<endl;
    }
    return ;
}
int main(){
    /* 预处理*/ 
    cin>>y;
    m=1,d=1;
    if(yesd(T)){
        month[2]=29;
    }else{
        month[2]=28;
    }
    while(!(T==y&&T1==m&&T2==d)){
        T2++;
        if(T2>month[T1]){
            T2=1;
            T1++;
            if(T1>12){
                T1=1;
                T++;
                if(yesd(T)){
                    month[2]=29;
                }else{
                    month[2]=28;
                }
            }
        }
        xq[1]++;
        if(xq[1]>7) xq[1]=1;
    }
    if(yesd(y)){
        month[2]=29;
    }else{
        month[2]=28;
    }
    T=y,T1=m,T2=d;
    int T3=xq[1];
    while(!(T==y+1&&T1==1&&T2==1)){
        if(T2==1){
            xq[T1]=T3;
        }
        T2++;
        if(T2>month[T1]){
            T1++;
            T2=1;
            if(T1>12){
                T1=1;
                T++;
            }
        }
        T3++;
        if(T3>7) T3=1;
    }
    cout<<"                              "<<y<<"\n\n";
    /*开始输出*/
    cout<<"      January               February               March\n";
    ztx(1);
    cout<<"       April                  May                   June\n";
    ztx(2);
    cout<<"        July                 August              September\n";
    ztx(3);
    cout<<"      October               November              December\n";
    ztx(4);
    return 0;
}

样例是对的,自己测的也过了,但是就是0分,求解


0
0
0
潘思呈
潘思呈
高级光能
高级光能

直接判断闰年和平年

输出

if就可以了

0
0
蒋祖轩
蒋祖轩
资深守护
资深守护

我来试试kudingplus^_^你好

我要回答