杭电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嘛 求解 是我理解错了嘛 展开
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嘛 求解 是我理解错了嘛 展开
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;
明明前面判断的闰年条件都写好了 (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);
}
}
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);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询