杭电oj1076 wrong answer 我理解的就是给你个年份Y求出其后第N个闰年年份

#include<iostream>usingnamespacestd;typedefstruct{intdate;intnum;}day;voidfun(daya[],... #include<iostream>
using namespace std;

typedef struct{
int date;
int num;
}day;
void fun(day a[],int arr[],int n);
int main()
{
cout<<"enter sum: "<<endl;
int sum;
cin>>sum;
day *pt1 = new day[sum];
int *pt2 = new int[sum];
cout<<"enter date&num"<<endl;
for(int i = 0; i < sum; i++)
{
cin>>pt1[i].date;
cin>>pt1[i].num;

}
fun(pt1,pt2,sum);
for(int k = 0; k <sum;k++)
{
cout<<pt2[k]<<endl;
}

return 0;
}

void fun(day a[],int arr[],int n)
{
for(int j = 0; j < n; j++)
{
while(1)
{
if( (a[j].date%4==0 && a[j].date%100!=0) || a[j].date%400==0){
arr[j] = a[j].date+a[j].num*4;
break;
}
else
a[j].date++;

}

}
}
http://acm.hdu.edu.cn/showproblem.php?pid=1076
示例中2004 10000 为什么是43236 不应该是42004嘛 求解 是我理解错了嘛
展开
 我来答
非突_real
2010-10-17 · TA获得超过330个赞
知道小有建树答主
回答量:501
采纳率:0%
帮助的人:378万
展开全部
看了半天终于知道你那里错了
if( (a[j].date%4==0 && a[j].date%100!=0) || a[j].date%400==0){
arr[j] = a[j].date+a[j].num*4;

明明前面判断的闰年条件都写好了 (a[j].date%4==0 && a[j].date%100!=0) || a[j].date%400==0 什么意思,就是year是4的倍数而不是100的倍数,或year是400的倍数 才是闰年
那为什么 你还这样计算年份呢 arr[j] = a[j].date+a[j].num*4;
你这个计算公式的意思不就是 year是4的倍数 就是闰年,
你自己好好想想吧

我把你的 fun()修改了一下

void fun(day a[],int arr[],int n)
{
for(int j = 0; j < n; j++)
{
arr[j]=a[j].date;
do{
if((arr[j]%4==0 && arr[j]%100!=0) || arr[j]%400==0)
if(!--a[j].num) break;
++arr[j];
}while(a[j].num);
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式