\ # 33 - 표현 식 값 구하 기
덧셈 과 곱셈 만 포함 하 는 산술 표현 식 을 지정 합 니 다. 표현 식 의 값 을 프로 그래 밍 하 십시오.
Input
한 줄 만 입력 하 십시오. 계산 이 필요 한 표현 식 을 입력 하 십시오. 표현 식 에는 숫자, 덧셈 연산 자 만 포함 되 어 있 습 니 다. " +” 곱셈 연산 자 " *”,괄호 도 없고 연산 에 참여 하 는 모든 숫자 는 0 도착 하 다 231-1 사이 의 정수 입 니 다. 데 이 터 를 입력 하면 이 줄 만 있 습 니 다. 0~ 9、 +、 *이. 12 종문 자.
Output
출력 은 한 줄 뿐 입 니 다. 정 수 를 포함 하여 이 표현 식 의 값 을 표시 합 니 다. 주의: 답 의 길이 가 더 많 을 때 4 비트 시 마지막 출력 만 하 십시오 4 선도 0 출력 하지 않 음.
Sample Input
【 1】 1+1*3+4 【 2】 1+1234567890*1 【 3】 1+1000000003*1
Sample Output
【 1】8【 2】 7891【 3】4
HINT
[입 출력 사례 설명]
본보기 1 계산 결과 8, 직접 출력 8。
본보기 2 계산 결과 1234567891, 출력 후 4 바로 7891。
본보기 3 계산 결과 1000000004, 출력 후 4 바로 4。
【 데이터 범위 】
... 에 대하 여 30% 의 데이터, 0 ≤ 표현 식 중 덧셈 연산 자 와 곱셈 연산 자의 총 수 ≤ 100;
... 에 대하 여 80% 의 데이터, 0 ≤ 표현 식 에서 덧셈 연산 자 와 곱셈 연산 자의 총 수 ≤ 1000;
... 에 대하 여 100% 의 데이터, 0 ≤ 표현 식 에서 덧셈 연산 자 와 곱셈 연산 자의 총 수 ≤ 100000.
Code:
#include // 24ms Solution
#include
#define SIZE 100001
using namespace std;
string a;
int num[SIZE];
char op[SIZE];
int main(int argc, char** argv)
{
long long res = 0, i = 0, temp = 0, n = 0;
cin >> a;
for ( ; ; ) //
{
if ((a[i] == '+') || (a[i] == '*'))
{
op[++n] = a[i];
num[n-1] = temp;
temp = 0;
}
else
{
temp = temp * 10 + a[i] - '0';
temp %= 10000;
}
if (++i == a.size())
{
break;
}
}
num[n] = temp;
num[n] = temp;
temp = num[0];
for (i = 1; i <= n; i++)
{
if (op[i] == '+') // ,
{
res += temp;
res %= 10000; //
temp = num[i];
}
else //
{
temp *= num[i];
temp %= 10000;
}
}
printf("%d", (res % 10000 + temp % 10000) % 10000);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
LeetCode Java First 400 문제 풀이 - 030Substring with Concatenation of All Words Hard You are given a string, s, and a list of words, words, that are all of...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.