列表

详情


NC231644. A+B

描述

在一行中给出一个字符串,请判断是否满足A op B格式,如果满足,输出计算结果,否则输出"skipped"。

op可以是+或者-AB 均为大于等于 0的整数,有前导0也算作合法情况。

保证数据中只有数字字符,+- ,此外字符串的长度不超过20。

输入描述

输入共一行,表示输入的字符串。

输出描述

如果满足A op B格式,则输出计算结果,否则输出skipped。

示例1

输入:

+12

输出:

skipped

示例2

输入:

2-3

输出:

-1

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 3ms, 内存消耗: 404K, 提交时间: 2021-12-26 13:33:51

#include<bits/stdc++.h> 
using namespace std;
typedef long long ll;

ll a,b;
char op[21];
int main(){
    if(scanf("%lld%[+-]%lld",&a,op,&b)==3&&strlen(op)==1)
    {
        if(cin>>op){
            cout<<"skipped";
        }
        else if(op[0]=='+') cout<<a+b;
        else cout<<a-b;
    }
    else{
        cout<<"skipped";
    }
    return 0;
}

pypy3 解法, 执行用时: 235ms, 内存消耗: 28696K, 提交时间: 2021-12-08 23:33:25

import re


s = input()
nums = re.split("[+-]", s)
# print(nums)
if len(nums) == 2 and "" not in nums:
    try:
        print(eval(s))
    except:
        print(-1)
else:
    print("skipped")

Python3 解法, 执行用时: 56ms, 内存消耗: 4580K, 提交时间: 2022-03-30 20:51:59

import re
s = input()
a = re.findall(r"^[0]*(\d+)([+-])[0]*(\d+)$",s)
if a:
    print(eval(''.join(a[0])))
else:
    print("skipped")

Ruby 解法, 执行用时: 66ms, 内存消耗: 8872K, 提交时间: 2021-12-12 13:25:32

s = gets.to_s
if (s =~ /^[0-9][0-9]*\+[0-9][0-9]*$/ or s =~ /^[0-9][0-9]*\-[0-9][0-9]*$/)
    puts eval s
else
    puts "skipped"
end

上一题