【模拟】表达式求值(jzoj 1768)
生活随笔
收集整理的這篇文章主要介紹了
【模拟】表达式求值(jzoj 1768)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
表達式求值
jzoj 1768
題目大意:
有一個式子(只含數(shù)字和加號乘號),讓你求出結(jié)果的前四位
輸入樣例
輸入樣例#1
1+1*3+4輸入樣例#2
1+1234567890*1輸入樣例#3
1+1000000003*1輸出樣例
輸出樣例#1
8輸出樣例#2
7891輸出樣例#3
4樣例解釋
樣例 1計算 的結(jié)果 為 8, 直接輸出 8。
樣例 2計算 的結(jié)果為1234567891 ,輸出后 4位,即 7891 。
樣例 3計算的結(jié)果為 1000000004 ,輸出后 4位,即 4。
數(shù)據(jù)范圍
對于 30% 的數(shù)據(jù), 0≤表達式中加法 運算 符和乘法 運算 符的總數(shù) ≤100 ;
對于 80% 的數(shù)據(jù), 0≤表達式中加法 運算 符和乘法運算 符的總數(shù) ≤1000 ;
對于 100% 的數(shù)據(jù), 0≤表達式中加法 運算 符和乘法運算 符的總數(shù) ≤100000。
解題思路:
已經(jīng)算出來的結(jié)果(遇到‘+’的)就直接放進ansansans里,還沒算完的就用lll存起來
代碼:
#include<cstdio> #include<iostream> using namespace std; int ans,top,l; char x; int read()//快讀 {int c=0;x=getchar();while(x>='0'&&x<='9') c=(c<<3)+(c<<1)+x-48,x=getchar();return c; } int main() {l=read();while(x=='+'||x=='*')//判斷是否結(jié)束了{if (x=='+') ans=(ans+l)%10000,l=read();//加進ans里else l=(l*read())%10000;//繼續(xù)乘}printf("%d",(ans+l)%10000); } 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的【模拟】表达式求值(jzoj 1768)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 会对电脑造成伤害吗挖矿会对电脑造成伤害吗
- 下一篇: 纪中培训总结(2019年9月4~13日)