cdoj 秋实大哥搞算数
生活随笔
收集整理的這篇文章主要介紹了
cdoj 秋实大哥搞算数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
地址:http://acm.uestc.edu.cn/#/contest/show/95
題目:
N - 秋實大哥搞算數
Time Limit: 3000/1000MS (Java/Others) ??? Memory Limit: 65535/65535KB (Java/Others)
Submit Status秋實大哥大學物理掛科了(誤),于是在下學期的前兩周的某一天要悲劇的補考。為了不給學校的挖掘機大樓做貢獻,秋實大哥決定在假期里努力復習。當然,良好的計算能力也是非常必要的,畢竟是涉及計算自己做多少分的題能夠通過考試的問題。現在他給自己出了一大堆長長的只有涉及整形四則運算式子,然后埋頭計算結果。為了檢驗自己的計算能力,他請你來幫忙。
Input
第一行一個整數T,表示式子的總數。
接下來每一行有一個長度不超過10^6的表達式,只包含正整數和四則運算符號('+', '-', '*', '/')。
保證輸入合法。
Output
對于每一個表達式,輸出相應的結果,占一行。
保證運算及結果在long long范圍以內。
Sample input and output
| 2 12+5/4-1 4*5/3 | 12 6 |
思路:
,,wa次數最多的題目,,一開始沒判\r(第一見要判這個的,漲姿勢了),,,wa無數次
然后智商不夠,用棧搞不出來,又只能自己想了。。。。。。
???????? 我的做法是對答案有影響的就三個操作符,當前讀取的操作符,和前兩個,然后對所有情況分類討論,,,這樣就可以在讀取的時候做的一邊讀取一邊計算了。。。
1 #include <iostream> 2 #include <algorithm> 3 #include <cstdio> 4 #include <cmath> 5 #include <cstring> 6 #include <queue> 7 #include <stack> 8 #include <map> 9 #include <vector> 10 #include <cstdlib> 11 #include <string> 12 13 #define PI acos((double)-1) 14 #define E exp(double(1)) 15 using namespace std; 16 17 int main (void) 18 { 19 int t; 20 cin>>t; 21 getchar(); 22 while(t--) 23 { 24 long long num[5],ans=0; 25 char op[5],c; 26 scanf("%lld",&num[1]); 27 if(scanf("%c",&c)==EOF||c=='\n') 28 { 29 printf("%lld\n",num[1]);continue; 30 } 31 op[2]=c;//3為當前操作數 32 scanf("%lld",&num[2]); 33 while(scanf("%c",&op[3])!=EOF && op[3]!='\n') 34 { 35 scanf("%lld",&num[3]); 36 if(op[3]=='*'||op[3]=='/') 37 { 38 if(op[2]=='+'||op[2]=='-') 39 { 40 if(op[3]=='*')num[2]*=num[3]; 41 else num[2]/=num[3]; 42 43 } 44 else 45 { 46 if(op[2]=='*') num[1]*=num[2]; 47 else num[1]/=num[2]; 48 num[2]=num[3]; 49 op[2]=op[3]; 50 } 51 52 } 53 else 54 { 55 if(op[2]=='+'||op[2]=='-') 56 { 57 if(op[2]=='+') num[1]+=num[2]; 58 else num[1]-=num[2]; 59 num[2]=num[3]; 60 op[2]=op[3]; 61 } 62 else 63 { 64 if(op[2]=='*') num[1]*=num[2]; 65 else num[1]/=num[2]; 66 num[2]=num[3]; 67 op[2]=op[3]; 68 } 69 } 70 } 71 if(op[2]=='*') ans=num[1]*num[2]; 72 else if(op[2]=='/') ans=num[1]/num[2]; 73 else if(op[2]=='+') ans=num[1]+num[2]; 74 else ans=num[1]-num[2]; 75 printf("%lld\n",ans); 76 } 77 78 return 0; 79 } View Code?
轉載于:https://www.cnblogs.com/weeping/p/5456145.html
總結
以上是生活随笔為你收集整理的cdoj 秋实大哥搞算数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu_常用命令_01
- 下一篇: 7:分支管理