Run ID 作者 问题 语言 测评结果 Time Memory 代码长度 提交时间
2529 孙浚轩 [在线测评解答教程] A+B Problem C++ Wrong Answer 0 MS 280 KB 6241 2024-01-07 17:46:46

Tests(0/11):


Code:

#include<iostream> #include<iomanip> #include<cmath> using namespace std; int gcd(long long x,long long y){ long long z=x%y; while(z!=0){ x=y; y=z; z=x%y; } return y; } //最大公因数 int lcm(long long x,long long y){ return x*y/gcd(x,y); } //最小公倍数 int fac(long long x,long long y){ int i=x-y; while(i>1){ x*=i; i-=y; } return x; } //阶乘 可支持多阶阶乘(多阶阶乘:x!y=x*(x-y)*(x-2y)*(x-3y)*...) double log_(double x, double y) { return log(x)/log(y); } //以x为底数y为对数的对数函数 int fp(double x){ int p=0; double m=x; while(m!=round(m)){ m*=10; p++; } return p; } //找出应当保留多少位小数 void rtno(double x){ cout<<fixed<<setprecision(fp(x))<<x; } //一个数保留适当位数的小数后输出 double cot(double x){ return 1.0/tan(x); } double sec(double x){ return 1.0/cos(x); } double csc(double x){ return 1.0/sin(x); } double acot(double x){ return atan(1.0/x); } double asec(double x){ return acos(1.0/x); } double acsc(double x){ return asin(1.0/x); } double coth(double x){ return 1.0/tanh(x); } double sech(double x){ return 1.0/cosh(x); } double csch(double x){ return 1.0/sinh(x); } int main(){ int sc; cout<<"科学计算器(更多)(1)/普通计算器(+ - * / %)(0)"; cin>>sc; if(sc==1){ double a,b,n; string so; string aso[24]={"p","nt","lg","fac","sin","cos","tan","cot","sec","csc","asin","acos","atan","acot","asec","acsc","sinh","cosh","tanh","coth","sech","csch","gcd","lcm"}; cout<<"运算:"<<endl; cout<<"(先输入运算方式,提示出来后再输入参与运算的数)"<<endl; cout<<"乘方:p"<<" "<<"开方:nt"<<" "<<"对数:lg"<<" "<<"阶乘:fac"<<endl; cout<<"三角函数:"<<endl<<"sin / cos / tan / cot / sec / csc"<<endl; cout<<"反三角函数:"<<endl<<"asin / acos / atan / acot / asec / acsc"<<endl; cout<<"双曲三角函数:"<<endl<<"sinh / cosh / tanh / coth / sech / csch"<<endl; cout<<"最大公因数:gcd 最小公倍数:lcm"<<endl; cin>>so; int d=0; for(int i=0;i<24;i++){ if(so==aso[i]){ d=1; if(i<=1) cout<<"请输入底数,然后输入指数(底数=实数&指数=实数):"; else if(i==2) cout<<"请输入底数,然后输入对数(底数=实数&对数=实数):"; else if(i>=4&&i<=21) cout<<"请输入一个实数:"; else if(i==3||i>=22) cout<<"请输入两个整数:"; cout<<"若输入为非实数将输出随机数"; if(i<=2) cin>>a>>n; else if(i==3||i>=22){ cin>>a>>b; if(b<1&&i==3){ cout<<"错误:输入小于1"; return 0; } if(floor(a)!=a||floor(b)!=b){ cout<<"错误:输入为非整数"; return 0; } } else cin>>a; if(i>=4&&i<=21) a=a*(M_PI/180); if(so=="p") rtno(pow(a,n)); else if(so=="nt") rtno(pow(a,1/n)); else if(so=="lg") rtno(log_(a,n)); else if(so=="fac") cout<<fac(a,b); else if(so=="sin") rtno(sin(a)); else if(so=="cos") rtno(cos(a)); else if(so=="tan") rtno(tan(a)); else if(so=="cot") rtno(cot(a)); else if(so=="sec") rtno(sec(a)); else if(so=="csc") rtno(csc(a)); else if(so=="asin") rtno(asin(a)); else if(so=="acos") rtno(acos(a)); else if(so=="atan") rtno(atan(a)); else if(so=="acot") rtno(acot(a)); else if(so=="asec") rtno(asec(a)); else if(so=="acsc") rtno(acsc(a)); else if(so=="sinh") rtno(sinh(a)); else if(so=="cosh") rtno(cosh(a)); else if(so=="tanh") rtno(tanh(a)); else if(so=="coth") rtno(coth(a)); else if(so=="sech") rtno(sech(a)); else if(so=="csch") rtno(csch(a)); else if(so=="gcd") cout<<gcd(a,b); else if(so=="lcm") cout<<lcm(a,b); } } if(d==0) cout<<"错误:未知的操作符"; }else if(sc==0){ double a,b; char op; cout<<"请输入:a op(+ - * / %) b"; cin>>a>>op>>b; switch(op){ case '+': rtno(a+b); break; case '-': rtno(a-b); break; case '*': rtno(a*b); break; case '/': if(b==0) cout<<"错误:除数不能为0"; else rtno(a/b); break; case '%': if(b==0) cout<<"错误:取余数时除数不能为0"; else rtno(a-b*floor(a/b)); break; default: cout<<"错误:未知的操作符"; return 0; } }else cout<<"错误:不存在该计算器型"; return 0; }


Run Info:

------Input------
84 87
------Answer-----
171
------Your output-----
科学计算器(更多)(1)/普通计算器(+ - * / %)(0)错误:不存在该计算器型