zoukankan      html  css  js  c++  java
  • POJ 2210

    u问题描述
    有一种特殊的日历法,它的一天和我们现在用的日历法的一天是一样长的。它每天有10个小时,每个小时有100分钟,每分钟有100秒。10天算一周,10周算一个月,10个月算一年。
    现在要你编写一个程序,将我们常用的日历法的日期转换成这种特殊的日历表示法。这种日历法的时、分、秒是从0开始计数的。日、月从1开始计数,年从0始计数。秒数为整数。假设 0:0:0 1.1.2000 等同于特殊日历法的 0:0:0 1.1.0
      
    u输入
    第一行是一个整数 N ,表示测试样例的数目。每个测试样例包含一行,格式为:hour:minute:second day.month.year日期总是合法的,并且 2000 <= year <= 50000.
    u输出
    对于每个测试样例输出一行,该行包含转换后得到的特殊日历表示法,形如:"mhour:mmin:msec mday.mmonth.myear"
     
    #include <stdio.h>
    #include<string.h>
    #include<stdlib.h>
    int leap[50010];
    int vis[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    void isleap()
    {
        int i,j;
        memset(leap,0,sizeof(leap));
        for(i=2000;i<=50000;i++)
        {
             if(i%4==0&&i%100!=0||i%400==0)
                leap[i]=1;
        }
    }      
    int total_days(int year,int month,int day)
    {
        int i,j;int sum=0;
        for(i=2000;i<year;i++)
        if(leap[i])
            sum+=366;
        else 
            sum+=365;
        for(i=0;i<month-1;i++)
            sum+=vis[i];//加上月份天数 
        if(leap[year])
            if(month>2)
                sum++; 
        return sum+day-1;
    }
    int main()
    {
    	int i,j,T;
        int hour,minute,sec,day,month,year;
        int mhour,mminute,msec,mday,mmonth,myear;
        int total_day,total_sec,mod;
        scanf("%d",&T);
        isleap();
        while(T--)
        {
        	total_day=total_sec=mod=0;
            scanf("%d%*c%d%*c%d%*c%d%*c%d%*c%d",&hour,&minute,&sec,&day,&month,&year);
            total_day=total_days(year,month,day);
            myear=total_day/1000;
            mod=total_day%1000;
            mmonth=mod/100+1;
            mod%=100;
            /*
            加1是因为total_days();返回的天数不包括当天
            */ 
            mday=mod+1;
            total_sec=(int)((3600*hour+60*minute+sec)*250.0/216);
            /* 
            mday+=total_sec/100000;
            不必要,因为原来的不够一天的 在新日历法中肯定也不够一天
    		*/
    		mhour=total_sec/10000;//100分钟,100秒
    		mod=total_sec%10000;
    		mminute=mod/100;
    		mod%=100;
    		msec= mod;
    		/*
    		后边两个是点号,吃了一个wa 
            */ 
      		printf("%d:%d:%d %d.%d.%d\n",mhour,mminute,msec,mday,mmonth,myear);
        }
        system("pause");
        return 0;
    }            
    
  • 相关阅读:
    Forms身份验证
    常见的js图片或内轮换效果
    模仿select选择框
    基于jquery的js幻灯片类
    js弹出幕布遮罩层
    css那些事
    选择珠宝js业务逻辑源码
    aspnet帐号密码改了会出问题
    用rails做了个书评排行网站,欢迎光临!
    转发:为什么函数式编程至关重要
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2611437.html
Copyright © 2011-2022 走看看