NC231644. A+B
描述
在一行中给出一个字符串,请判断是否满足A op B格式,如果满足,输出计算结果,否则输出"skipped"。
op可以是+或者-。A和B 均为大于等于 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