问题标题: 酷町堂:3311 日期(date) 我WA了

0
0
已解决
汪宇航
汪宇航
新手启示者
新手启示者

#include <iostream>

using namespace std;

int mon[12]={31,29,31,30,31,30,31,31,30,31,30,31};

int main(){

int k,x[1000000],y[1000000],num[1000000],a[1000000],b[1000000],c[1000000],d[1000000];

cin>>k;

for(int i=1;i<=k;i++){

cin>>x[i]>>y[i];

a[i]=x[i]/100,b[i]=y[i]/100,c[i]=x[i]%100,d[i]=y[i]%100;

for(int j=min(a[i],b[i]);j<=max(a[i],b[i]);j++){

num[i]+=mon[j];

}

if(x[i]<=y[i]){

num[i]+=mon[c[i]]-c[i];

num[i]+=d[i];

}else{

num[i]+=mon[d[i]]-d[i];

num[i]+=c[i];

}

if(num[i]<=100){

cout<<"NO\n";

}else{

cout<<"YES\n";

}

}

return 0;

}

汪宇航在2021-03-02 20:01:06追加了内容

#include <iostream>

#include <cmath>

using namespace std;

int mon[12]={31,29,31,30,31,30,31,31,30,31,30,31};

int main(){

int k,x[1000000],y[1000000],num[1000000],num1[1000000];

cin>>k;

for(int i=1;i<=k;i++){

cin>>x[i]>>y[i];

if(y[i]<x[i]){

swap(x[i],y[i]);

}

for(int j=x[i]/100+1;j<y[i]/100;j++){

num[i]+=mon[j];

}

num[i]+=mon[(x[i]+1)/100]-x[i]%100;

num[i]+=y[i]%100;

if(num[i]<=100){

cout<<"NO\n";

}else{

cout<<"YES\n";

}

}

return 0;

}

20?

汪宇航在2021-03-03 16:34:49追加了内容

我会了


1
已采纳
汪恺恒
汪恺恒
中级启示者
中级启示者

首先,输入不需要用数组

之后如果第一个日期大于第二个日期,就交换

求余下天数

int m1=x/100,d1=x%100;
int m2=y/100,d2=y%100;
int day=mon[m1]-d1+d2;

整月天数

for(int i=m1+1;i<m2;i++){
			day+=mon[i];
}

最后判断如果day大于100,输出YES,否则输出NO

汪恺恒在2021-03-03 12:44:39追加了内容

还有你这num和x,y都不需要用数组

cin>>x>>y

就行了,因为这一次的计算结果和上一次无关

1
张展嘉
张展嘉
新手天翼
新手天翼

核心代码:

int n,a[2110],b[2110],month[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};

cin>>n;

for(int i=1;i<=n;i++){

cin>>a[i]>>b[i];

}

for(int i=1;i<=n;i++) {

int date1=max(a[i],b[i]),date2=min(a[i],b[i]),sum=0;

while (sum<=100 && date2<=1231) {

sum++;

date2++;

if (date2%100>month[date2/100]) {

date2-=month[date2/100];//天数清1

date2+=100;//月份+1

}

} if (date1<date2 || sum<100) cout<<"NO"<<endl; else cout<<"YES"<<endl;

}

祝你AC!!!!!

求采纳!!!!!!!!!!!

0
汪宇航
汪宇航
新手启示者
新手启示者

谁解出来,悬赏20豆!!!

我要回答