作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在研究 https://open.kattis.com/problems/rationalarithmetic供自己练习。我得到 4 位数字和一个操作。输入是:x1 y1 op x2 y2,分数是 x1/y1 和 x2/y2。如果我得到输入:1 3 + 1 2 那么它是 1/3 + 1/2,答案应该是最小分形,所以它是 5/6。我通过了我得到的测试用例,但我无法弄清楚我做错了什么。总结一下我的做法:
这是主要功能以及如果操作是*我如何处理。我以相同的方式处理其他操作,但使用其他数学。
void mult(int *x1, int *y1, int *x2, int *y2){
long long top = (*x1) * (*x2);
long long bottom = (*y2) * (*y1);
long long frac;
if(bottom != 0||top != 0){
frac = commonDiv(top,bottom);
}else{
frac = 1;
}
string sign = "";
if(top * bottom < 0){
sign = "-";
}else{
sign = "";
}
printf("%s%lld / %lld\n",sign.c_str(),abs(top/frac),abs(bottom/frac) );
}
int main()
{
int numOp;
scanf("%d", &numOp);
getPrime(1,sqrt(100000));
while(numOp != 0){
int x1,x2,y1,y2;
char op[2];
scanf("%d %d %s %d %d", &x1, &y1, op, &x2, &y2);
if( op[0] == '+'){
add(&x1, &y1, &x2,&y2);
}
else if(op[0] == '-'){
sub(&x1,&y1,&x2,&y2);
}
else if(op[0] == '/'){
divi(&x1,&y1,&x2,&y2);
}
else{
mult(&x1,&y1,&x2,&y2);
}
numOp--;
}
}
这是我的代码和给定的测试用例,我得到了正确的结果。我需要一些关于不同测试用例或任何建议的提示。 http://ideone.com/jBddSI
最佳答案
我会建议您以下几点:在处理有理数时忘记使用素数列表寻找最大公约数。这就是我们在学校所学的内容,但是在编程时可以使用 Euclid's algorithm 更轻松(有效)地解决此任务。
关于c++ - 来自给定输入的理性算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31828681/
如何获得原始号码?例如当我输入: r = Rational(2, 10) # (1/5) 2 和 10 将更改为 1 和 5: r.numerator # 1 r.denominator # 5
如今大家都迷恋着资讯站、小说站、电商站的经营,已经很少有人再去关心所谓的博客了。还记得09年左右,独立博客迎来自身发展的黄金时期,涌现了牟长青、一格电、卢松松、月光博客等一系列知名博客,而这其中卢松
我是一名优秀的程序员,十分优秀!