hdu 3546 Calculator
来源:互联网 发布:mac如何隐藏dock 编辑:程序博客网 时间:2024/05/22 10:45
若c=b,则之前的C不要求,直到遇到更前面有a=c或a*=c或a+=c时,C的值才要计算
#include<iostream>#include<cstdio>#include<string.h>using namespace std;const int base=10000;const int width=4;const int N=1300;struct bint{ int ln,v[N]; bint(int r=0) { for(ln=0;r>0;r/=base) v[ln++]=r%base; } bint operator = (const bint& r) { memcpy(this,&r,(r.ln+1)*sizeof(int)); }};bool operator < (const bint& a,const bint& b){ int i; if(a.ln!=b.ln) return a.ln<b.ln; for(i=a.ln-1;i>=0&&a.v[i]==b.v[i];i--); return i<0?0:a.v[i]<b.v[i];}bool operator <= (const bint& a,const bint& b){ return !(b<a);}bint operator + (const bint& a,const bint& b){ bint res; int i,cy=0; for(i=0;i<a.ln||i<b.ln||cy>0;i++) { if(i<a.ln) cy+=a.v[i]; if(i<b.ln) cy+=b.v[i]; res.v[i]=cy%base;cy/=base; } res.ln=i; return res;}bint operator * (const bint& a,const bint& b){ bint res;res.ln=0; if(0==b.ln){ res.v[0]=0;return res; } int i,j,cy; for(i=0;i<a.ln;i++) for(j=cy=0;j<b.ln||cy>0;j++,cy/=base) { if(j<b.ln) cy+=a.v[i]*b.v[j]; if(i+j<res.ln) cy+=res.v[i+j]; if(i+j>=res.ln) res.v[res.ln++]=cy%base; else res.v[i+j]=cy%base; } return res;}void write(const bint& v){ int i; printf("%d",v.ln==0?0:v.v[v.ln-1]); for(i=v.ln-2;i>=0;i--) printf("%04d",v.v[i]); printf("\n");}char buf[10];bint b[10];struct o{ int a,b,o;//0:+ 1:* 2:=}o[400000];bool flag[10],cal[400000];int main(){ for(int i=0;i<10;i++) b[i]=1; int i=0; while(scanf("%s",buf)!=EOF&&buf[0]!='#') { o[i].a=buf[0]-'A'; if(buf[1]=='+') o[i].o=0,o[i].b=buf[3]-'A'; else if(buf[1]=='*') o[i].o=1,o[i].b=buf[3]-'A'; else o[i].o=2,o[i].b=buf[2]-'A'; i++; } for(int j=0;j<10;j++) flag[j]=true; for(int j=i-1;j>=0;j--) { cal[j]=flag[o[j].a]; if(o[j].o==2) flag[o[j].a]=false,flag[o[j].b]=true; } for(int j=0;j<i;j++) { if(cal[j]) { if(o[j].o==0) b[o[j].a]=b[o[j].a]+b[o[j].b]; else if(o[j].o==1) b[o[j].a]=b[o[j].a]*b[o[j].b]; else b[o[j].a]=b[o[j].b]; } } for(int i=0;i<10;i++) write(b[i]); return 0;}
- hdu 3546 Calculator
- hdu Calculator 3546
- HDU Gary's Calculator
- HDU 3624: Digital Calculator
- hdu 5238 Calculator
- HDU 2424-Gary's Calculator
- HDU 5238 Calculator【线段树】
- Calculator
- Calculator
- Calculator
- Calculator
- Calculator
- Calculator
- calculator
- Calculator
- Calculator
- calculator
- Calculator
- UML建模---活动图
- 行走在路上
- UML建模---之用例图
- top命令详解
- UML中的关系
- hdu 3546 Calculator
- c_str
- Linux进程管理之ps命令
- 年画
- POJ 2000 Glod Conins(我的水题之路——之后的N天N个金币,打表)
- 删除行号软件
- hdu 3547 DIY Cube【polya】
- linux下的C语言开发(管道通信)
- POJ 2013 Symmetric Order(我的水题之路——奇偶输出)