zcmu1605
1605: 大一下之小試身手
Time Limit:?1 Sec??Memory Limit:?128 MB
Submit:?256??Solved:?49
[Submit][Status][Web Board]
Description
在浙江中醫藥大學的半年學習,你看起來帥了很多,這個時候你已經看不上A+B了,現在你喜歡用你的代碼去模擬你看到一切的事物。有一天你發現了一門神奇的語言那就是python,比如print “xxxx”*100,就可以把”xxxx”連續輸出一百遍…?這個時候你表示不服,我的C語言也可以,不就是多寫一個循環而已么。不開心的你于是決定用C模擬Python解釋器,考慮到…?其實也沒啥,現在我告訴你Python的一些常用的運算符號和規則,你來做個解釋器,恩,就這樣。
???在Python里?“*”,”+”,”/”, ”-”,”%”?和C語言一樣
???????????????“**”表示冪運算,比如2**3==8
???給你的語句如下:
???????????????????Print??string * num(string表示一個字符串,num表示一個數)
???????????????????Print??a operator??b (?輸出a?,b經過operator運算的結果)
Input
只有上述兩種輸入(數據在Long long?內)
Output
輸出正確的答案
Sample Input
print 54*1
print "Tomcat"*2
Sample Output
54
TomcatTomcat
模擬,細節處理好(比如有可以出現負數的情況)
#include<bits/stdc++.h> using namespace std;#define e exp(1) #define pi acos(-1) #define mod 998244353 #define inf 0x3f3f3f3f #define ll long long #define ull unsigned long long #define mem(a,b) memset(a,b,sizeof(a)) int gcd(int a,int b){return b?gcd(b,a%b):a;}ll qpow(ll a,ll b) {ll ans=1;while(b){if(b&1)ans*=a;a*=a;b>>=1;}return ans; } int main() {char s[10005];char q[15];while(~scanf("%s",s)){scanf("%s",s);int len=strlen(s);char t[10005];int i=0,cnt=0,num=0;if(s[i]=='"'){i++;while(s[i]!='"'){t[cnt++]=s[i];i++;}i+=2;for(; i<len; i++){num=num*10+s[i]-'0';}t[cnt]='\0';for(int k=0; k<num; k++){printf("%s",t);}puts("");}else {ll a=0,b=0,f=1;int flag=0;if(s[i]=='-')f=-1,i++;while(s[i]>='0'&&s[i]<='9'){a=10*a+s[i]-'0';i++;}a*=f;char q=s[i];if(s[i+1]=='*')i++,flag=1;i++;f=1;if(s[i]=='-')f=-1,i++;while(s[i]>='0'&&s[i]<='9'){b=10*b+s[i]-'0';i++;if(i>=len)break;}b*=f;if(flag){printf("%lld\n",qpow(a,b));}else {if(q=='*')printf("%lld\n",a*=b);else if(q=='/')printf("%lld\n",a/=b);else if(q=='%')printf("%lld\n",a%=b);else if(q=='-')printf("%lld\n",a-=b);else if(q=='+')printf("%lld\n",a+=b);}}}return 0; }?
總結
- 上一篇: zcmu1540(二分)
- 下一篇: Annotation processin