计算任意两天之间的天数
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、
以上是关于计算任意两天之间的天数的主要内容,如果未能解决你的问题,请参考以下文章