• codeforces gym 100827A Runes


    acing…..还没有ac呢,写个中途报告
    传送门:
    http://codeforces.com/gym/100827/attachments/download/3892/pacific-northwest-region-programming-contest-2014-div-1-en.pdf


    题目大意
    意思就是给你几个带有问号的算式(格式是[digit][op][digit]=[digit]),让你在问号中填入同样的数字(0-9之间),使算式成立,如果无法成立,输出-1。


    题目思路
    暴力,纯纯的暴力。
    先把所有问号的位置处理出来,然后在0-9之间循环,在中间填数字,然后把三个数字抠出来,再判断算式是否成立。


    虽然未ac但还是萌萌嗒的代码

    //
    //  main.cpp
    //  Runes
    //
    //  Created by zhangdenny on 16/7/3.
    //  Copyright (c) 2016年 Kirito. All rights reserved.
    //
    
    #include  <functional>
    #include  <algorithm>
    #include  <exception>
    #include  <stdexcept>
    #include  <streambuf>
    #include  <iterator>
    #include  <string.h>
    #include  <stdlib.h>
    #include  <typeinfo>
    #include  <valarray>
    #include  <iostream>
    #include  <sstream>
    #include  <istream>
    #include  <stdio.h>
    #include  <climits>
    #include  <clocale>
    #include  <complex>
    #include  <csetjmp>
    #include  <csignal>
    #include  <cstdarg>
    #include  <cstddef>
    #include  <ctype.h>
    #include  <cassert>
    #include  <cstdlib>
    #include  <utility>
    #include  <cstring>
    #include  <numeric>
    #include  <ostream>
    #include  <cwctype>
    #include  <fstream>
    #include  <iomanip>
    #include  <math.h>
    #include  <bitset>
    #include  <cctype>
    #include  <string>
    #include  <vector>
    #include  <limits>
    #include  <locale>
    #include  <memory>
    #include  <cerrno>
    #include  <iosfwd>
    #include  <cfloat>
    #include  <cstdio>
    #include  <cwchar>
    #include  <cmath>
    #include  <ctime>
    #include  <deque>
    #include  <queue>
    #include  <stack>
    #include  <list>
    #include  <ios>
    #include  <map>
    #include  <set>
    #include  <new>
    #define fi first
    #define se second
    #define np next_permutation
    #define ll long long
    using namespace std;
    int testc,k,wei[105],ans=-1;
    string s;
    bool chec(string s)
    {
        bool flag=false;
        int sum[3],test=0;
        string fuhao;
        sum[0]=0;
        sum[1]=0;
        sum[2]=0;
        for(int i=0;i<int(s.size());i++)
        {
            if(i==0 && s[i]=='-')
            {
                flag=true;
            }
            else
            if((s[i]=='*' || s[i]=='+' || s[i]=='-') && (s[i-1]>='0' && s[i-1]<='9'))
            {
                fuhao[0]=s[i];
                sum[test]/=10;
                if(flag)
                {
                    sum[test]=-sum[test];
                }
    
                if(s[i+1]=='-')
                {
                    i++;
                    flag=true;
                }
                else
                    flag=false;
                test++;
            }
            else
            if(s[i]=='=')
            {
                sum[test]/=10;
                if(flag)
                {
                    sum[test]=-sum[test];
                }
                if(s[i+1]=='-')
                {
                    i++;
                    flag=true;
                }
                else
                    flag=false;
                test++;
            }
            else
            if(s[i]>='0' && s[i]<='9')
            {
                int yuan=int(s[i]-'0');
                sum[test]=sum[test]+yuan;
                sum[test]*=10;
            }
            if(i==int(s.size())-1)
            {
                sum[test]/=10;
                if(flag)
                    sum[test]=-sum[test];
            }
        }
        if(fuhao[0]=='+' && sum[0]+sum[1]==sum[2])
            return true;
        else
        if(fuhao[0]=='-' && sum[0]-sum[1]==sum[2])
            return true;
        else
        if(fuhao[0]=='*' && sum[0]*sum[1]==sum[2])
            return true;
            return false;
    }
    void change()
    {
        for(int i=0;i<=9;i++)
        {
            for(int j=0;j<k;j++)
            {
                s[wei[j]]=i+'0';
            }
            if(chec(s))
            {
                ans=i;
                break;
            }
        }
    }
    int main()
    {
        cin>>testc;
        while(testc--)
        {
            ans=-1;
            k=0;
            cin>>s;
            int n=int(s.size());
            for(int i=0;i<n;i++)
            {
                if(s[i]=='?')
                    wei[k++]=i;
            }
            change();
            cout<<ans<<endl;
        }
        return 0;
    }
  • 相关阅读:
    NAIPC 2019-It’s a Mod, Mod, Mod, Mod World(类欧几里德模板)
    BAPC 2018 Preliminaries-Isomorphic Inversion(字符串哈希)
    Cubemx 生成工程代码失败的原因
    共生滤波器相关论文分析
    西瓜书6.2 matlab的libsvm使用
    西瓜书4.4 基于基尼指数选择划分的决策树 预剪枝与后剪枝
    西瓜书4.3 编写过程 决策树
    西瓜书 5.5 编写过程(标准BP与累计BP)
    西瓜书3.4 解题报告(python 多分类学习 十折交叉法)
    西瓜书3.3 尝试解题(python)对率回归 极大似然估计
  • 原文地址:https://www.cnblogs.com/NightRaven/p/9333261.html
Copyright © 2020-2023  润新知