zoukankan      html  css  js  c++  java
  • ZOJ 3594 Sexagenary Cycle

    题意:天干地支。

            天干: Jia, Yi, Bing, Ding, Wu, Ji, Geng, Xin, Ren and Gui

            地支: Zi, Chou, Yin, Mao, Chen, Si, Wu, Wei, Shen, You, Xu and Hai

            每一轮是60次,不要误认为120次。。。(常识),这道题是经典的水题,很水但是还是被坑了很久大概一下午加一晚上。。。。。搞不懂自己什么水平

    说下这道题目的坑把,首先是输出地支的时候是小写。。。其次还有AD和BC之分刚开始没有看见要求BC,最后是定义数组后当取余为0时候应该换到最后一个所以str[(t+9)%12]刚开始的时候把天干也当成12个了 害我找了很久

    思路:刚开始看了维基百科里的解法,这也是第一次看英文会的解法,求AD,若n>=4则,n=(n-3)%60,若n=1-3,则代表58th,59th,60th。求BC,n=60-(n+2)%60.

             第二种方法简单,根据1911推导下就ok了,至于BC就是倒着来,和AD刚好相反

           

    View Code
    #include<stdio.h>
    int main()
    {
        char str1[11][10]={"Jia","Yi","Bing","Ding","Wu","Ji","Geng","Xin","Ren","Gui"};
        char str2[13][10]={"zi","chou","yin","mao","chen","si","wu","wei","shen","you","xu","hai"};
        long n,t1,t2;
        scanf("%ld",&n);
        while(n--)
        {
            int x;
            scanf("%ld",&x);
            if(x==1) printf("Xinyou\n");
            else if(x==2) printf("Renxu\n");
            else if(x==3) printf("Guihai\n");
            else if(x>=4)
            {
                x-=3;
                x=x%60; 
                t1=x%10;
                t2=x%12;
                printf("%s%s\n",str1[(t1+9)%10],str2[(t2+11)%12]);
            }
            else
            {
                x*=-1;
                x+=2;
                x=60-x%60;
                t1=x%10;
                t2=x%12;
                printf("%s%s\n",str1[(t1+9)%10],str2[(t2+11)%12]);
            }
        }
        return 0;
    }
    View Code
    #include <stdio.h>
    int main(int argc, char *argv[])
    {
        int T,n;
        int t1,t2;
        char str1[15][10]={"Xin","Ren","Gui","Jia","Yi","Bing","Ding","Wu","Ji","Geng"};
        char str2[15][10]={"you","xu","hai","zi","chou","yin","mao","chen","si","wu","wei","shen"};
        char str3[11][10]={"Geng","Ji","Wu","Ding","Bing","Yi","Jia","Gui","Ren","Xin"};
        char str4[15][10]={"shen","wei","wu","si","chen","mao","yin","chou","zi","hai","xu","you"};
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d",&n);
            if(n>0)
            {
               n%=60;
               t1=n%10;
               t2=n%12;
               printf("%s%s\n",str1[(t1+9)%10],str2[(t2+11)%12]);
            }
            else
            {
                n*=-1;
                n%60;
                t1=n%10;
                t2=n%12;
                printf("%s%s\n",str3[(t1+9)%10],str4[(t2+11)%12]);
            }
        }
        return 0;
    }
  • 相关阅读:
    C++各大有名库的介绍——C++标准库
    转换中文数字成为阿拉伯数字
    nutch 写一个indexingfilter插件
    nutch从网页中提取字段并索引_HtmlParseFilter
    java csv操作类
    简单的有限状态机
    getResource()和getResourceAsStream的路径问题
    eclipse修改整个工作空间的编码
    批处理启动tomcat
    java linq
  • 原文地址:https://www.cnblogs.com/zsboy/p/2454873.html
Copyright © 2011-2022 走看看