pku 1006

Source Code

Problem: 1006 User: cug_fish2008
Memory: 300K Time: 32MS
Language: C++ Result: Accepted
  • Source Code
    #include <iostream>
    using namespace std;
    
    struct Node
    {
    	int p;
    	int e;
    	int i;
    	int d;
    	Node *next;
    };
    int main()
    {
    	Node *start;
    	Node *pass;
    	pass=new Node;
    	start=pass;
    	while(cin>>pass->p>>pass->e>>pass->i>>pass->d)
    	{
    		if(pass->p==-1&&pass->e==-1&&pass->i==-1&&pass->d==-1)
    			break;
    		if(pass->p<0||pass->p>365||pass->e<0
    			||pass->e>365||pass->i<0||pass->i>365)
    			continue;
    		pass->next=new Node;
    		pass=pass->next;
    	}
    	int j=1;
    	while(start->p!=-1||start->e!=-1||start->i!=-1||start->d!=-1)
    	{
    		int a1,a2,a3;
    		int m1,m2,m3;
    		int m_1,m_2,m_3;
    		a1=start->p%23;
    		a2=start->e%28;
    		a3=start->i%33;
    		m1=28*33;
    		m2=23*33;
    		m3=23*28;
    		for(int k=1;k<23;k++)
    			if((m1*k)%23==1){m_1=k;break;}
    		for(int k=1;k<28;k++)
    			if((m2*k)%28==1){m_2=k;break;}
    		for(int k=1;k<33;k++)
    			if((m3*k)%33==1){m_3=k;break;}
    		int x,v;
    		x=a1*m1*m_1+a2*m2*m_2+a3*m3*m_3;
    		v=23*28*33;
    		x=x%v;
    		if(x<=start->d)x+=v;
    		x=x-start->d;
    		if(x<=21252){
    		cout<<"Case "<<j<<": ";
    		cout<<"the next triple peak occurs in ";
    		cout<<x<<" days."<<endl;}
    		j++;
    		start=start->next;
    	}
    	return 0;
    }
    
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值