程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> CodeForces 548C

CodeForces 548C

編輯:C++入門知識

CodeForces 548C


題意:給一個青蛙和一朵花澆水,它們會按每分鐘(h*x+y)mod m的速度長高,問它們分別長到a1和a2,最少需要多長時間。

思路:開始時理解錯了題意,注意是同時給它們兩個澆水啊!!!兩個小家伙同時都在長高啊。找到循環節,暴力就可解。

AC代碼:

 

#include 
#include 
using namespace std;

int main()
{
    long long m,h1,h2,a1,a2,x1,x2,y1,y2;
    long long p1,p2,r1,r2;
    while(scanf(%I64d,&m)!=EOF)
    {
      scanf(%I64d%I64d%I64d%I64d,&h1,&a1,&x1,&y1);
      scanf(%I64d%I64d%I64d%I64d,&h2,&a2,&x2,&y2);
      p1=0,p2=0,r1=0,r2=0;
      for(int i=1;i<=2*m;i++)
      {
         h1=(x1*h1+y1)%m;
         if(h1 == a1)
        {
		  if(p1 == 0)
		  p1 = i;
		  else if(r1 == 0)
		  r1 = i-p1;
        }
      }
      for(int i=1;i<=2*m;i++)
      {
        h2=(x2*h2+y2)%m;
        if(h2 == a2)
        {
            if(p2 == 0)
			p2 = i;
            else if(r2 == 0)
			r2 = i-p2;
        }
      }
      if(p1==0||p2==0) printf(-1
);
      else if(p1==p2) printf(%I64d
,p1);
      else
      {
        for(int i=1;i<=2*m;i++)
        {
          if(p1

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved