北大ACM的题,不懂怎么改?
题目:Description两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可...
题目:Description
两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。
我们把这两只青蛙分别叫做青蛙A和青蛙B,并且规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米,这样我们就得到了一条首尾相接的数轴。设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米。现在要你求出它们跳了几次以后才会碰面。
Input
输入只包括一行5个整数x,y,m,n,L,其中x≠y < 2000000000,0 < m、n < 2000000000,0 < L < 2100000000。
Output
输出碰面所需要的跳跃次数,如果永远不可能碰面则输出一行"Impossible"
Sample Input
1 2 3 4 5
Sample Output
4
我的代码
#include<stdio.h>
int main()
{
_int64 x,y,m,n,L,s,t;
scanf("%I64d%I64d%I64d%I64d%I64d",&x,&y,&m,&n,&L);
if(m==n)
if(x==y)
{
s=0;
t=0;
}
else
{
s=1;
t=1;
}
else if(m>n)
if(x<y)
{
s=(y-x)/(m-n);
t=(y-x)%(m-n);
}
else if(x==y)
{
s=0;
t=0;
}
else
{
s=(L-x+y)/(m-n);
t=(L-x+y)%(m-n);
}
else
if(x<y)
{
s=(L-y+x)/(n-m);
t=(L-y+x)%(n-m);
}
else if(x==y)
{
s=0;
t=0;
}
else
{
s=(x-y)/(n-m);
t=(x-y)%(n-m);
}
if(t==0)
printf("%I64d",s);
else
printf("Impossible");
return 0;
} 展开
两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。
我们把这两只青蛙分别叫做青蛙A和青蛙B,并且规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米,这样我们就得到了一条首尾相接的数轴。设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米。现在要你求出它们跳了几次以后才会碰面。
Input
输入只包括一行5个整数x,y,m,n,L,其中x≠y < 2000000000,0 < m、n < 2000000000,0 < L < 2100000000。
Output
输出碰面所需要的跳跃次数,如果永远不可能碰面则输出一行"Impossible"
Sample Input
1 2 3 4 5
Sample Output
4
我的代码
#include<stdio.h>
int main()
{
_int64 x,y,m,n,L,s,t;
scanf("%I64d%I64d%I64d%I64d%I64d",&x,&y,&m,&n,&L);
if(m==n)
if(x==y)
{
s=0;
t=0;
}
else
{
s=1;
t=1;
}
else if(m>n)
if(x<y)
{
s=(y-x)/(m-n);
t=(y-x)%(m-n);
}
else if(x==y)
{
s=0;
t=0;
}
else
{
s=(L-x+y)/(m-n);
t=(L-x+y)%(m-n);
}
else
if(x<y)
{
s=(L-y+x)/(n-m);
t=(L-y+x)%(n-m);
}
else if(x==y)
{
s=0;
t=0;
}
else
{
s=(x-y)/(n-m);
t=(x-y)%(n-m);
}
if(t==0)
printf("%I64d",s);
else
printf("Impossible");
return 0;
} 展开
1个回答
展开全部
#include
using namespace std;
#include
int TransHaab(char *NofM)
{
if(strcmp(NofM,"pop")==0)
return 1;
if(strcmp(NofM,"no")==0)
return 2;
if(strcmp(NofM,"zip")==0) // "zip" 中间多了个空格
return 3;
if(strcmp(NofM,"zotz")==0)
return 4;
if(strcmp(NofM,"tzec")==0)
return 5;
if(strcmp(NofM,"xul")==0)
return 6;
if(strcmp(NofM,"yoxkin")==0)
return 7;
if(strcmp(NofM,"mol")==0)
return 8;
if(strcmp(NofM,"chen")==0)
return 9;
if(strcmp(NofM,"yax")==0)
return 10;
if(strcmp(NofM,"zac")==0)
return 11;
if(strcmp(NofM,"ceh")==0)
return 12;
if(strcmp(NofM,"mac")==0)
return 13;
if(strcmp(NofM,"kankin")==0)
return 14;
if(strcmp(NofM,"muan")==0)
return 15;
if(strcmp(NofM,"pax")==0)
return 16;
if(strcmp(NofM,"koyab")==0)
return 17;
if(strcmp(NofM,"cumhu")==0)
return 18;
if(strcmp(NofM,"uayet")==0)
return 19;
}
void TransTzd(int NofD)
{
switch(NofD)
{
case 1:cout<<"imix";break;
case 2:cout<<"ik";break;
case 3:cout<<"akbal";break;
case 4:cout<<"kan";break;
case 5:cout<<"chicchan";break;
case 6:cout<<"cimi";break;
case 7:cout<<"manik";break;
case 8:cout<<"lamat";break;
case 9:cout<<"muluk";break;
case 10:cout<<"ok";break;
case 11:cout<<"chuen";break;
case 12:cout<<"eb";break;
case 13:cout<<"ben";break;
case 14:cout<<"ix";break;
case 15:cout<<"mem";break;
case 16:cout<<"cib";break;
case 17:cout<<"caban";break;
case 18:cout<<"eznab";break;
case 19:cout<<"canac";break;
case 20:cout<<"ahau";break;
}
}
int daycount(int DNum,char *NofM,int Hyears)
{
long month,counts;
month=TransHaab(NofM);
counts=Hyears*365+(month-1)*20+DNum+1;
return counts;
}
void TransCalender(long dcount)
{
long years,num,mod,NofD;
years=(dcount-1)/260; // 忘记-1, 这是硬伤啊
mod=dcount%260;
num=mod%13;
if(num==0)
num=13;
NofD=mod%20;
if(NofD==0)
NofD=20;
cout<<num<<' ';
TransTzd(NofD);
cout<<' '<<years<<endl;
}
int main()
{
long m,DNum,Hyears;
char temp;
static char NofM[15];
long dcount[60000];
cin>>m;
for(int i=0;i<m;i++)
{
cin>>DNum>>temp>>NofM>>Hyears;
dcount[i]=daycount(DNum,NofM,Hyears);
}
cout<<m<<endl;
for(int k=0;k<m;k++)
{
TransCalender(dcount[k]);
}
return 0;
}
幼虫孵化盛期施药,把幼虫消灭在分散危害之前。药剂可选用有
using namespace std;
#include
int TransHaab(char *NofM)
{
if(strcmp(NofM,"pop")==0)
return 1;
if(strcmp(NofM,"no")==0)
return 2;
if(strcmp(NofM,"zip")==0) // "zip" 中间多了个空格
return 3;
if(strcmp(NofM,"zotz")==0)
return 4;
if(strcmp(NofM,"tzec")==0)
return 5;
if(strcmp(NofM,"xul")==0)
return 6;
if(strcmp(NofM,"yoxkin")==0)
return 7;
if(strcmp(NofM,"mol")==0)
return 8;
if(strcmp(NofM,"chen")==0)
return 9;
if(strcmp(NofM,"yax")==0)
return 10;
if(strcmp(NofM,"zac")==0)
return 11;
if(strcmp(NofM,"ceh")==0)
return 12;
if(strcmp(NofM,"mac")==0)
return 13;
if(strcmp(NofM,"kankin")==0)
return 14;
if(strcmp(NofM,"muan")==0)
return 15;
if(strcmp(NofM,"pax")==0)
return 16;
if(strcmp(NofM,"koyab")==0)
return 17;
if(strcmp(NofM,"cumhu")==0)
return 18;
if(strcmp(NofM,"uayet")==0)
return 19;
}
void TransTzd(int NofD)
{
switch(NofD)
{
case 1:cout<<"imix";break;
case 2:cout<<"ik";break;
case 3:cout<<"akbal";break;
case 4:cout<<"kan";break;
case 5:cout<<"chicchan";break;
case 6:cout<<"cimi";break;
case 7:cout<<"manik";break;
case 8:cout<<"lamat";break;
case 9:cout<<"muluk";break;
case 10:cout<<"ok";break;
case 11:cout<<"chuen";break;
case 12:cout<<"eb";break;
case 13:cout<<"ben";break;
case 14:cout<<"ix";break;
case 15:cout<<"mem";break;
case 16:cout<<"cib";break;
case 17:cout<<"caban";break;
case 18:cout<<"eznab";break;
case 19:cout<<"canac";break;
case 20:cout<<"ahau";break;
}
}
int daycount(int DNum,char *NofM,int Hyears)
{
long month,counts;
month=TransHaab(NofM);
counts=Hyears*365+(month-1)*20+DNum+1;
return counts;
}
void TransCalender(long dcount)
{
long years,num,mod,NofD;
years=(dcount-1)/260; // 忘记-1, 这是硬伤啊
mod=dcount%260;
num=mod%13;
if(num==0)
num=13;
NofD=mod%20;
if(NofD==0)
NofD=20;
cout<<num<<' ';
TransTzd(NofD);
cout<<' '<<years<<endl;
}
int main()
{
long m,DNum,Hyears;
char temp;
static char NofM[15];
long dcount[60000];
cin>>m;
for(int i=0;i<m;i++)
{
cin>>DNum>>temp>>NofM>>Hyears;
dcount[i]=daycount(DNum,NofM,Hyears);
}
cout<<m<<endl;
for(int k=0;k<m;k++)
{
TransCalender(dcount[k]);
}
return 0;
}
幼虫孵化盛期施药,把幼虫消灭在分散危害之前。药剂可选用有
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询