zoukankan      html  css  js  c++  java
  • CodeForces 548C

    题意:给一个青蛙和一朵花浇水,它们会按每分钟(h*x+y)mod m的速度长高。问它们分别长到a1和a2,最少须要多长时间。

    思路:開始时理解错了题意。注意是同一时候给它们两个浇水啊!

    !!两个小家伙同一时候都在长高啊。找到循环节。暴力就可解。

    AC代码:

    #include <iostream>
    #include <cstdio>
    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<p2)
              p1+=r1;
              else
              p2+=r2;
              if(p1==p2)
              {
                  printf("%I64d
    ",p1);
                  break;
              }
            }
            if(p1!=p2)
            printf("-1
    ");
          }
        }
        return 0;
    }

  • 相关阅读:
    个人总结08
    npm快速入门
    Activity简介
    SELinux
    正则表达式学习笔记(二)表达式的匹配原理
    git学习笔记(一)
    使用VSFTPD传输文件
    正则表达式学习笔记(一)正则表达式入门
    Linux基础(一)磁盘分区
    Shell脚本笔记(九)数组
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/6867858.html
Copyright © 2011-2022 走看看