zoukankan      html  css  js  c++  java
  • Codeforces:68A-Irrational problem(暴力大法好)

    A- Irrational problem p

    Time Limit: 2000MS
    Memory Limit: 262144K
    64bit IO Format: %I64d& %I64

    Description

    Little Petya was given this problem for homework:

    You are given function Irrational problem (here Irrational problem represents the operationof taking the remainder). His task is to count the number ofintegers x inrange [a;b] withproperty f(x) = x.

    It is a pity that Petya forgot the order in which the remaindersshould be taken and wrote down only 4 numbers. Each of 24 possibleorders of taking the remainder has equal probability of beingchosen. For example, if Petya has numbers 1, 2, 3, 4 then he cantake remainders in that order or first take remainder modulo 4,then modulo 2, 3, 1. There also are 22 other permutations of thesenumbers that represent orders in which remainder can be taken. Inthis problem 4 numbers wrote down by Petya will be pairwisedistinct.

    Now it is impossible for Petya to complete the task given byteacher but just for fun he decided to find the number ofintegers Irrational problem with property thatprobability thatf(x) = x isnot less than 31.4159265352718281828459045%. In otherwords, Petya will pick up the number x if there existat least 7 permutations ofnumbersp1, p2, p3, p4, forwhich f(x) = x.

    Input

    First line of the input will contain 6 integers, separated byspaces: p1, p2, p3, p4, a, b (1 ≤ p1, p2, p3, p4 ≤ 1000, 0 ≤ a ≤ b ≤ 31415).

    It is guaranteed that numbers p1, p2, p3, p4 will be pairwisedistinct.

    Output

    Output the number of integers in the given range that have thegiven property.

    Sample Input

    2 7 1 8 2 8
    20 30 40 50 0 100
    31 41 59 26 17 43

    Sample Output

    0
    20
    9


    解题心得:

    1. 题目说了一大堆,什么mod四个数,什么不同的排列方式,满足什么什么的,其实不管怎么排列mod出来的效果都是等效mod最小的那个数,想想就能明白。
    2. 两种做法:
      • 第一种,看mod最小的那个数和a之间有多少个数,但是要注意的是mod的最小的那个数是否比b要小,不然会得到的答案会比a到b的所有的数要多,比赛就WA了,悲伤。
      • 第二种,最稳妥的方法,直接暴力,从a到b一个数一个数的跑,反正数据量这么小。

    暴力跑的代码:

    #include<stdio.h>
    typedef long long ll;
    using namespace std;
    int main()
    {
        int x[4],a,b;
        while(scanf("%d%d%d%d%d%d",&x[0],&x[1],&x[2],&x[3],&a,&b) != EOF)
        {
            int ans = 0;
            for(int i=a;i<=b;i++)
                if(i%x[0]%x[1]%x[2]%x[3] == i)
                    ans++;
            printf("%d
    ",ans);
        }
        return 0;
    }
    

    观察mod的性质来写的代码

    /*还是暴力大法好*/
    #include<stdio.h>
    #include<algorithm>
    typedef long long ll;
    using namespace std;
    int main()
    {
        int x[4],a,b;
        while(scanf("%d%d%d%d%d%d",&x[0],&x[1],&x[2],&x[3],&a,&b) != EOF)
        {
            sort(x,x+4);
            if(x[0] <= b)//注意边界的问题
                printf("%d
    ",max(x[0]-a,0));//注意x[0]和a谁大的问题
            else
                printf("%d
    ",b-a+1);
        }
        return 0;
    }
    
  • 相关阅读:
    SpringCloud
    Springboot笔记
    SpringMVC学习随笔
    Spring中事务的理解
    Spring中Aop的理解
    FLutter 各种项目的目录创建
    flutter 打包Android 创建签名证书
    flutter web网站 第一次访问首屏页 空白卡顿 再显示
    flutter--报错--Flutter 调试时卡在 Installing buildappoutputsapkapp.apk
    flutter 顶部状态栏 底部栏 显示和隐藏
  • 原文地址:https://www.cnblogs.com/GoldenFingers/p/9107196.html
Copyright © 2011-2022 走看看