zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    类的继承
    面向对象的编程
    Python的模块
    ES6_12_Set和Map数据结构以及for of循环
    ES6_11_字符串、数值、数组、对象扩展
    ES6_09_Generator函数
    ES6_08_Iterator遍历器
    ES6_07_Symbol属性
    ES6_05_三点运算符和形参默认值
    Sqlstate解释
  • 原文地址:https://www.cnblogs.com/NightRaven/p/9333261.html
Copyright © 2011-2022 走看看