A50143.数位和 题解
2025-06-24 22:57:58
发布于:北京
25阅读
0回复
0点赞
依题意模拟即可
Code:
#include <bits/stdc++.h>
using namespace std;
bool a[10000];//统计不同数位和
int b[]={0,31,-1,31,30,31,30,31,31,30,31,30,31};//b[0]和b[2]可以随便填,但b[0]别漏
int feb(int y){//判断二月有几天
if (y%400==0) return 29;
else if (y%4==0&&y%100!=0) return 29;
return 28;
}
int sumdate(int y,int m,int d){//计算日期数位和
int ans=0;
while (y>0){
ans+=y%10;
y/=10;
}
while (m>0){
ans+=m%10;
m/=10;
}
while (d>0){
ans+=d%10;
d/=10;
}
return ans;
}
int main(){
int y1,m1,d1;
int y2,m2,d2;
cin>>y1>>m1>>d1>>y2>>m2>>d2;
int y=y1,m=m1,d=d1,ans=0;
while (1){
if (!a[sumdate(y,m,d)]){
a[sumdate(y,m,d)]=true;
ans++;
}
if (y==y2&&m==m2&&d==d2) break;//结束循环条件
if (m==12&&d==31){//12月31日->下一年1月1日
y++;
m=1;
d=1;
}
else if (d==b[m]||m==2&&d==feb(y)){某月最后一天->下个月第一天
m++;
d=1;
}
else d++;//下一天
}
cout<<ans;
return 0;
}
这里空空如也
有帮助,赞一个