zoukankan      html  css  js  c++  java
  • ACM程序设计选修课——1036: Hungar的菜鸟赛季(YY)

    1036: Hungar的菜鸟赛季

    Time Limit: 1 Sec  Memory Limit: 64 MB
    Submit: 20  Solved: 14
    [Submit][Status][Web Board]

    Description

    我们都知道对于一个新秀来说,发挥稳定 是一件很困难的事情,特别是对于Hungar 这种状态型选手来说,他现在已经打完了很  多场比赛,已知这么多场打完的比赛里,他 的最少得分是A分,最高得分是B分,Hungar对于数学中的质数一直特别喜欢,他现在遇到个问题,如果每次我可以对A加上某个质数,直到A==B为止,那么最多可以执行多少次增加操作呢?

    Hungar打完球实在是太累了,只能靠你来解决这个问题了,如果他不能解决这个问题,会影响他的发挥,所以你一定要尽快帮他解决哦!

    Input

    第一行一个整数T(T <=20), 代表有T组数据.

    对于每一组数据,包含两个整数A, B (1 <= A <= B <= 100000).

    Output

    最多的操作次数.

    Sample Input

    4
    2 2
    3 7
    4 10
    1 8

    Sample Output

    0
    2
    3
    3

    HINT

     

    输入数据保证有解.

    这题之前用我自己所谓的DP过是因为数据太水了,那个代码根本就是错的(输入1 3居然给我输出0),又回头看了一下发现题目中说数据保证有解,然后纸上列了几组发现很多的数都可以被表示为2*a+3*b的形式即2*(a+b)+b的形式。那么此题就是求Max{a+b}

    那么就让n一直减去3直到成为一个偶数,直接除以2这样一来就可以做到最大的操作次数了。

    代码:

    #include<iostream>
    #include<algorithm>
    #include<cstdlib>
    #include<sstream>
    #include<cstring>
    #include<cstdio>
    #include<string>
    #include<deque>
    #include<cmath>
    #include<queue>
    #include<set>
    #include<map>
    using namespace std;
    int main(void)
    {
        int n,a,b,t,ans;
        cin>>t;
        while (t--)
        {
            cin>>a>>b;
            if(a==b)
            {
                cout<<0<<endl;
                continue;
            }
            ans=0;
            b-=a;
            while (b%2!=0)
            {
                b=b-3;
                ans++;
            }
            ans=ans+b/2;
            cout<<ans<<endl;
        }
        return 0;
    }
  • 相关阅读:
    Redis学习笔记
    RedisTemplate操作命令
    RedisTemplate操作命令
    RedisTemplate操作命令
    RedisTemplate操作命令
    将chrome储存的密码转为MarkDown表格
    使用redisson做redis分布式锁
    RocketMQ 整合SpringBoot发送事务消息
    关于java读写锁的测试
    java8 stream记录
  • 原文地址:https://www.cnblogs.com/Blackops/p/5356399.html
Copyright © 2011-2022 走看看