#include <bits/stdc++.h>
using namespace std;
int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int prime(int year){
if((year%4==0 && year%100!=0) || year%400==0) return 1;
return 0;
}
int main(){
int y,n,month,dd;
while(scanf("%d%d",&y,&n)!=EOF){
if(prime(y)) day[2]=29;
else day[2]=28;
for(int i=1;i<=12;i++){
if(n>day[i]) n-=day[i];
else{
dd=n;
month=i;
break;
}
}
printf("%04d-%02d-%02d\n",y,month,dd);
}
return 0;
}
下面是我自己的代码,在devc++上运行完全是正确的,不明白在oj的平台上怎么就不对了?
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
int r=0;
int year,sum;
scanf("%d%d",&year,&sum);
int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
// while(scanf("%d%d",&year,&sum)!=EOF)
while(cin>>year>>sum)
{
if(year%400==0||year%4==0&&year%100!=0)
{
day[2]=29;
}
int totalday[13]={0};
for(int i=0;i<13;i++)
{
totalday[i]=totalday[i-1]+day[i];
}
for(r=0;r<13;r++)
{
if(sum<=totalday[r])
break;
}
int dday=sum-totalday[r-1];
printf("%d-%02d-%02d\n",year,r,dday);
}
return 0;
}
再就是注意一下日期的标准输出格式
printf("%d-%02d-%02d\n",year,r,dday);


京公网安备 11010502036488号