题目链接:点击打开链接
题目大意:略。
解题思路:sscanf 函数 + 快速幂,注意:题目中的数据可能引号里含有引号,如果处理不当可能导致TLE;注意(推荐)的写法。
AC 代码
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll power(ll a,ll b) { ll ans=1; while(b) { if(b&1) ans*=a; b>>=1; a*=a; } return ans; } int main() { ll a,b; char s[1000]; while(gets(s)) { // if(s[6]=='"') // (low 方法) // { // string ss=string(s); // int l=ss.find_first_of('"'); // int r=ss.find_last_of('"'); // ss=ss.replace(ss.begin()+r,ss.begin()+r+1," "); // ss=ss.replace(ss.begin()+l,ss.begin()+l+1,""); // sscanf(ss.c_str(),"print %s *%lld",ss.begin(),&b); // for(int i=0;i<b;i++) // printf("%s",ss.c_str()); // puts(""); // continue; // } ll rs; char ss[1000]; if(sscanf(s,"print %lld*%lld",&a,&b)==2) rs=a*b; else if(sscanf(s,"print %lld+%lld",&a,&b)==2) rs=a+b; else if(sscanf(s,"print %lld/%lld",&a,&b)==2) rs=a/b; else if(sscanf(s,"print %lld-%lld",&a,&b)==2) rs=a-b; else if(sscanf(s,"print %lld%%%lld",&a,&b)==2) rs=a%b; else if(sscanf(s,"print %lld**%lld",&a,&b)==2) rs=power(a,b); else if(sscanf(s,"%*s \"%[^\"]\"*%lld",ss,&b)==2) //print "Tomcat"*2 (推荐) { // printf("ss == %s\n",ss); // printf("b == %lld\n",b); while(b--) printf("%s",ss); puts(""); continue; } printf("%lld\n",rs); } return 0; }