UVALive 6163

#include <algorithm>
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <math.h>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#define inf 0x7f7f7f7f

using namespace std;

int cal(int a, int b, int c)
{
    if (c==0) return a*b;
    if (c==1){
        if (b==0) return inf/2;
        return a/b;
    }
    if (c==2) return a+b;
    if (c==3) return a-b;
}

bool Can(int k)
{
    int a[4]={k/1000,k%1000/100,k%100/10,k%10};
    int num,num1,num2;
    for (int i=0;i<3;i++)
        for (int j=i+1;j<=3;j++)
            if(a[i]>a[j]){
                int kk=a[i];
                a[i]=a[j];
                a[j]=kk;
        }

    do{
    for (int r1=0;r1<=3;r1++)
        for (int r2=0;r2<=3;r2++)
            for (int r3=0;r3<=3;r3++){
                if (cal(cal(cal(a[0],a[1],r1),a[2],r2),a[3],r3)==10) return true;
                if (cal(cal(a[0],a[1],r1),cal(a[2],a[3],r3),r2)==10) return true;
                if (cal(cal(a[0],cal(a[1],a[2],r2),r1),a[3],r3)==10) return true;
                if (cal(a[0],cal(cal(a[1],a[2],r2),a[3],r3),r1)==10) return true;
                if (cal(a[0],cal(a[1],cal(a[2],a[3],r3),r2),r1)==10) return true;
            }

    }while (next_permutation(a, a+4));
    return false;
}

int main()
{
    int n,k;
    bool flag;
    while (scanf("%d",&n)!=EOF){
        if (n==0)
            break;
        flag=false;
        for (int i=1;i<=n;i++){
            scanf("%d",&k);
            if (!Can(k))
                flag=true;
        }
        if (!flag)
            printf("TRUE\n");
        else
            printf("BUSTED\n");
    }
    return 0;
}

总结下:第一个是那个全排列的函数,,, 得先需要排下顺序;

第二个在做的时候要把所有的运算顺序搞出来,

浪费时间太多了

UVALive 6163,布布扣,bubuko.com

时间: 2024-10-13 05:53:22

UVALive 6163的相关文章

UVALive 6163(暴力枚举)

这道题我的做法就是枚举这四个数的所有排列所有运算所有计算顺序. 略有考验代码能力,不能漏掉情况,注意模块化的思想,一些功能写成函数调试的时候结构清晰好分析. 比赛时没有AC是对next_permutation()函数理解的不透,根本没有想到是没有从最小字典序开始枚举的问题. 就是next_permutation()函数是从当前顺序枚举到字典序最大的,而我开始时do里面的a数组不一定是字典序最小的,但是next_permutation()函数一定是从当前字典序往最大的枚举,所以漏掉了字典序很小的那

UESTC 2014 Summer Training #19

A.UVALive 6161 去迟了,队友已经开始写了,应该是个水题,贴个队友代码 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<map> #include<set> #include<vector> #include<algorithm> #inclu

ACM--South Pacific 2012

题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=584 A:UVAlive 6161 Decision Making 题意:给出01字符串,判断中间两位是否相同,相同就输出Do-it,否者输出Do-it-Not. 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring

UVALive 4848 Tour Belt

F - Tour Belt Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Practice UVALive 4848 Description Korea has many tourist attractions. One of them is an archipelago (Dadohae in Korean), a cluster of small islands sca

UVALive 6467 Strahler Order 拓扑排序

这题是今天下午BNU SUMMER TRAINING的C题 是队友给的解题思路,用拓扑排序然后就可以了 最后是3A 其中两次RE竟然是因为: scanf("%d",mm); ORZ 以后能用CIN还是CIN吧 QAQ 贴代码了: 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #include <math.h> 5 #include <iostre

UVALive 7077 Little Zu Chongzhi&#39;s Triangles (有序序列和三角形的关系)

这个题……我上来就给读错了,我以为最后是一个三角形,一条边可以由多个小棒组成,所以想到了状态压缩各种各样的东西,最后成功了……结果发现样例过不了,三条黑线就在我的脑袋上挂着,改正了以后我发现N非常小,想到了回溯每个棍的分组,最多分5组,结果发现超时了……最大是5^12 =  244,140,625,厉害呢…… 后来想贪心,首先想暴力出所有可能的组合,结果发现替换问题是一个难题……最后T T ,我就断片了.. 等看了别人的办法以后,我才发现我忽视了三角形的特性,和把数据排序以后的特点. 如果数据从

Gym 100299C &amp;&amp; UVaLive 6582 Magical GCD (暴力+数论)

题意:给出一个长度在 100 000 以内的正整数序列,大小不超过 10^ 12.求一个连续子序列,使得在所有的连续子序列中, 它们的GCD值乘以它们的长度最大. 析:暴力枚举右端点,然后在枚举左端点时,我们对gcd相同的只保留一个,那就是左端点最小的那个,只有这样才能保证是最大,然后删掉没用的. UVaLive上的数据有问题,比赛时怎么也交不过,后来去别的oj交就过了. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000&qu

UVALive 6511 Term Project

Term Project Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVALive. Original ID: 651164-bit integer IO format: %lld      Java class name: Main 解题:强连通分量 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn = 1

UVALive 6508 Permutation Graphs

Permutation Graphs Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVALive. Original ID: 650864-bit integer IO format: %lld      Java class name: Main 解题:逆序数 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long l