zoukankan      html  css  js  c++  java
  • Bessie Goes Moo

    Bessie Goes Moo

    题目描述

    Farmer John and Bessie the cow love to exchange math puzzles in their free time. The last puzzle FJ gave Bessie was quite difficult and she failed to solve it. Now she wants to get even with FJ by giving him a challenging puzzle.

    Bessie gives FJ the expression (B+E+S+S+I+E)(G+O+E+S)(M+O+O), containing the seven variables B,E,S,I,G,O,M (the "O" is a variable, not a zero). For each variable, she gives FJ a list of up to 500 integer values the variable can possibly take. She asks FJ to count the number of different ways he can assign values to the variables so the entire expression evaluates to a multiple of 7.

    Note that the answer to this problem can be too large to fit into a 32-bit integer, so you probably want to use 64-bit integers (e.g., "long long"s in C or C++).

    输入

    The first line of the input contains an integer N. The next N lines each contain a variable and a possible value for that variable. Each variable will appear in this list at least once and at most 500 times. No possible value will be listed more than once for the same variable. All possible values will be in the range −105 to 105.

    输出

    Print a single integer, giving the number of ways FJ can assign values to variables so the expression above evaluates to a multiple of 7.

    样例输入

    10
    B 2
    E 5
    S 7
    I 10
    O 16
    M 19
    B 3
    G 1
    I 9
    M 2
    

    样例输出

    2
    

    提示

    The two possible assignments are

    (B,E,S,I,G,O,M) = (2, 5, 7, 9,  1, 16, 19) -> 51,765                

    = (2, 5, 7, 9,  1, 16, 2 ) -> 34,510

    分析:对每个数取模,然后暴力即可,复杂度O(7^7);

    代码:

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    #include <algorithm>
    #include <climits>
    #include <cstring>
    #include <string>
    #include <set>
    #include <map>
    #include <queue>
    #include <stack>
    #include <vector>
    #include <list>
    #define rep(i,m,n) for(i=m;i<=n;i++)
    #define rsp(it,s) for(set<int>::iterator it=s.begin();it!=s.end();it++)
    #define mod 1000000007
    #define inf 0x3f3f3f3f
    #define vi vector<int>
    #define pb push_back
    #define mp make_pair
    #define fi first
    #define se second
    #define ll long long
    #define pi acos(-1.0)
    const int maxn=1e3+10;
    const int dis[4][2]={{0,1},{-1,0},{0,-1},{1,0}};
    using namespace std;
    ll gcd(ll p,ll q){return q==0?p:gcd(q,p%q);}
    ll qpow(ll p,ll q){ll f=1;while(q){if(q&1)f=f*p;p=p*p;q>>=1;}return f;}
    int n,m,k,t;
    ll ans;
    char a[10];
    int gao(char p)
    {
        int i;
        string q="BESIGOM";
        for(i=0;q[i]!=p;i++);
        return i;
    }
    set<int>p[7];
    int q[7][7];
    int main()
    {
        int i,j;
        scanf("%d",&n);
        while(n--)
        {
            scanf("%s%d",a,&m);
            m%=7;
            while(m<0)m+=7;
            p[gao(a[0])].insert(m);
            q[gao(a[0])][m]++;
        }
        for(int x:p[0])
        for(int y:p[1])
        for(int z:p[2])
        for(int s:p[3])
        for(int t:p[4])
        for(int e:p[5])
        for(int r:p[6])
        {
            if((x+y+y+z+z+s)*(t+e+y+z)*(r+e+e)%7==0)
                ans+=1LL*q[0][x]*q[6][r]*q[1][y]*q[2][z]*q[3][s]*q[4][t]*q[5][e];
        }
        printf("%lld
    ",ans);
        //system("pause");
        return 0;
    }
  • 相关阅读:
    打包python脚本为exe可执行文件-pyinstaller和cx_freeze示例
    2011年-CUshell编程大赛
    【Java菜鸟学习总结】Java基础知识(类)
    【Java菜鸟学习总结】Java基础(关键字、数据类型、运算符、流程控制)
    【Java菜鸟学习总结】Java 后端开发学习路线
    【opencv_python学习之三】图像处理(一)更改色彩模式
    【opencv_python学习之二.五】如何查看opencv_python的函数说明
    【cocos2d-x 学习(一)】【转】Cocos2d-x 3.X Qt MinGW版本编译运行
    mfc导出dll(一)
    【opencv_python学习之二】图像处理初识
  • 原文地址:https://www.cnblogs.com/dyzll/p/5775230.html
Copyright © 2011-2022 走看看