Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

???

Posted by _LV111 at 2009-04-04 18:08:01 on Problem 1006
In Reply To:我的理解,感觉不是很严密,不过AC了,大家看看是不是可以这样理解啊 Posted by:absolute at 2009-03-28 22:51:40
> 题目意思大概是:
> p+23*integer=e+28*integer=i+33*integer=x+d,
> 求出x。
> 我的思路是,既然每个等式都等于x+d,那么我每个等式来一次就可以了。然后将三个等式的结果相加即可。
> 
> p+23*interger = x+d = rp; rp初始等于28*33,然后每次rp递增28*33,直到rp%23=p,得到rp,同样道理re每次递增23*33,ri每次递增23*28,得到re,ri,最后x=(rp+re+ri-d)%21252;
> 
> 完整程序如下:
> 	int p,e,i,d;
> 	int mp,me,mi;
> 	mp = 28*33;
> 	me = 23*33;
> 	mi = 23*28;
> 	scanf("%d %d %d %d",&p,&e,&i,&d);
> 	int n=1;
> 	while(p!=-1||e!=-1||i!=-1||d!=-1)
> 	{
> 		int rp,re,ri;
> 		rp = mp;
> 		re = me;
> 		ri = mi;
> 		p %= 23;
> 		e %= 28;
> 		i %= 33;
> 		while(rp%23!=p)
> 		{
> 			rp += mp;
> 		}
> 		while(re%28!=e)
> 		{
> 			re += me;
> 		}
> 		while(ri%33!=i)
> 		{
> 			ri += mi;
> 		}
> 		int x;
> 		x= (rp+re+ri-d)%21252;
> 		if(x==0)
> 			x=21252;
> 		printf("Case %d: the next triple peak occurs in %d days.\n",n,x);
> 		n++;
> 		scanf("%d %d %d %d",&p,&e,&i,&d);
> 	}
> 
可以通过吗?
我的程序代码如下:
#include<stdio.h>
int Calcu(int pp,int ee,int ii,int dd);

int main(void)
{
	int p,e,i,d;
	int y=1;
	scanf("%d %d %d %d",&p,&e,&i,&d);
	while(p!=-1&&e!=-1&&i!=-1&&d!=-1)
	{
		printf("Case %d: the next triple peak occurs in %d days.\n",y++,Calcu(p,e,i,d));
		scanf("%d %d %d %d",&p,&e,&i,&d);
	}
	return 0;
}
int Calcu(int pp,int ee,int ii,int dd)
{
	int x=pp+23;
	while(!(x>ee&&x>ii&&(x-ee)%28==0&&(x-ii)%33==0))
	{
		x+=23;
	}
	while(x<=dd)
	{
		x+=21252;
	}
	return x-dd;
}
可是,wa...

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator