计算任意两天之间的天数

Posted elpsycongroo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算任意两天之间的天数相关的知识,希望对你有一定的参考价值。

site:http://bailian.openjudge.cn/xly2018/

1、计算任意两天之间的天数

思路:以0为起始点计算天数,然后相减即可。这样的编码复杂度会减少很多。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
bool isleapyear(int y){
    return (y%4==0&&y%100!=0||y%400==0);
}
int sum1(int a1,int b1,int c1){
    int md[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    int res=a1*365;
    res+=(a1-1)/4+1;
    res-=(a1-1)/100+1;
    res+=(a1-1)/400+1;
    for(int i=1;i<b1;i++)res+=md[i];
    if(b1>2&&isleapyear(a1)) res++;
    res+=c1;
    return res;
}
int cnt(int a1,int b1,int c1,int a2,int b2,int c2){
    int res1=sum1(a1,b1,c1);
    int res2=sum1(a2,b2,c2);
    int ans=res2-res1;
    return ans;
}
int main(){
    int a1,b1,c1,a2,b2,c2;
    cin>>a1>>b1>>c1>>a2>>b2>>c2;
    printf("%d
",cnt(a1,b1,c1,a2,b2,c2));
    return 0;
}

 2、回文子串

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
    int n;
    cin>>n;
    while(n--){
        string s;
        cin>>s;
        int res=1;
        int residx=0;
        int length=0;
        for(int i=0;i<s.size();i++){
            int j=1;
            for(;;j++){
                if(i-j<0||i+j>=s.size()) break;
                if(s[i-j]!=s[i+j]) break;
            }
            j--;
            if(2*j+1>res){
                res=2*j+1;
                residx=i;
                length=j;
            }
        }
        for(int i=residx-length;i<=residx+length;i++){
            printf("%c",s[i]);
        }
        printf("
");
    }
}

3、

以上是关于计算任意两天之间的天数的主要内容,如果未能解决你的问题,请参考以下文章

T-SQL 计算两天之间的天数(datediff 不太有效)

C++ 计算任意两个日期之间的天数

oracle怎么计算两个日期之间去除周末的天数?

js计算两个月份之间的天数差。

如何用c语言来计算日期间隔天数?

C/C++输入两个任意日期求相隔天数