• 多校第八场


    HDU  4950  Monster

           小模拟题。找到推断的临界条件。

         

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    __int64 h,a,b,k,sum;
    int main()
    {
        int i=0;
        while(scanf("%I64d%I64d%I64d%I64d",&h,&a,&b,&k)&&(a+b+h+k))
        {
            i++;
            bool flag=0;
            sum=h;
            if(a>=h)  flag=1;
            if(sum-k*a+(k-1)*b<1)  flag=1;
            if(a*k-b*(k+1)>0)  flag=1;
            if(flag==1)cout<<"Case #"<<i<<": YES"<<endl;
             else cout<<"Case #"<<i<<": NO"<<endl;
        }
        return 0;
    }
    

    HDU  4952    Number Transformation

          这个题的数据量是比較大的,要是直接暴搞的话肯定是会T的。可是打表之后就发现了规律;

        

    #include<iostream>
    #include<cstdio>
    using namespace std;
    __int64 x,k;
    int main()
    {
        int i=0;
        while(scanf("%I64d%I64d",&x,&k)&&(x+k))
        {
            __int64 y;
            int t=0;
            for(int i=2;i<=k;i++)
            {
                if(x%i)
                {
                   if(t>100) break;
                   y=x/i;
                   y++;
                   x=y*i;
                   y=x/i;
                   t++;
                  cout<<i<<" "<<y<<" "<<x<<endl;
                }
            }
        }
        return 0;
    }
    

      发现到x/(i+1)小于i+1之后。x/(i+1)的值是不会变化的;

      事实上官方是有公式证明的;

    以下是代码。

        

    #include<iostream>
    #include<cstdio>
    using namespace std;
    __int64 x,k;
    int main()
    {
        int j=0;
        while(scanf("%I64d%I64d",&x,&k)&&(x+k))
        {
            __int64 y;
            j++;
            bool flag=0;
            for(int i=2; i<=k; i++)
            {
                if(x%i)
                {
                    y=x/i;
                    y++;
                    x=y*i;
                    y=x/i;
                    if(y<i)
                    {
                        flag=1;
                        break;
                    }
                }
            }
            if(flag==1) printf("Case #%d: %I64d
    ",j,y*k);
            else printf("Case #%d: %I64d
    ",j,x);
        }
        return 0;
    }
    

     

  • 相关阅读:
    & 0xFF 作用 取低8位
    java 数组
    github提交代码时,提示remote: Support for password authentication was removed on August 13,
    java Collection集合
    java Math类
    《超文本和超链接》的时间线整理
    MEAF框架概念检索工具
    如何申请苹果开发者个人账号
    c#程序打包,同时把netframework也打包进去
    c# winform 程序打包部署
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7131609.html
Copyright © 2020-2023  润新知