鱼C论坛

 找回密码
 立即注册
查看: 1484|回复: 7

大数相乘

[复制链接]
发表于 2023-5-9 22:05:47 | 显示全部楼层 |阅读模式
7鱼币
#include<stdio.h>
#include<math.h>

int main()
{
        double a,b,c,d,e,f;
        scanf("%lf %lf %lf %lf %lf %lf",&a,&b,&c,&d,&e,&f);

        
        if(a/d*b/e*c/f<=1.000001)
        {
                printf("0");
        }
        
        else if(a/d*b/e*c/f>1)
        {
                printf("1");
        }
        
        else if(a/d*b/e*c/f<1)
        {
                printf("-1");
        }
        
        
        return 0;
}

题目

题目
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-9 22:06:10 | 显示全部楼层
这段代码实现的是判断三个大数相乘的结果是否大于、小于或等于1,并输出相应的结果。其中输入的六个数分别是a、b、c、d、e、f。

具体实现是通过将a/d*b/e*c/f与1进行比较,如果小于等于1.000001,则输出0;如果大于1,则输出1;如果小于1,则输出-1。

需要注意的是,这里使用了double类型来存储输入的数,因为这些数可能非常大,超过了int或long类型的范围。同时,由于浮点数的精度问题,判断是否小于等于1.000001而不是1可以避免精度误差导致的错误输出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-5-9 22:06:35 | 显示全部楼层
下方是题目描述 上方是我的代码 请问代码出错地方在哪儿 评判是wa 应该如何修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-9 22:17:45 | 显示全部楼层
你的问题就是第一个 if 条件涵盖了最后一个 , 你想想看
<= 1.00001 是不是包含 < 1
所以应该输出小于的时候你会输出等于 , 所以出错了
这里给出我的代码 , 要加 math.h 头文件
#include <stdio.h>
#include <math.h>

double a, b, c, d, e, f;

int main(){
    scanf("%lf%lf%lf%lf%lf%lf", &a, &b, &c, &d, &e, &f);

    if(fabs(a/d*b/e*c/f - 1) <= 1e-5){
        // 这里会因为精度问题变成1.0...01这种, 这时我们就认为是相等
        // fabs( x ) 是给 x 取绝对值
        // 这里就看它跟 1 相差是不是很小
        printf("0");
    }
    else if(a/d*b/e*c/f > 1){
        printf("1");
    }
    else{
        // 所有情况剩下就是小于了
        printf("-1");
    }

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-9 22:19:46 | 显示全部楼层
if(a/d*b/e*c/f<=1.000001)这句怎么是<=?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-9 22:21:49 | 显示全部楼层
大概改成==就可以吧。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-9 22:25:33 | 显示全部楼层
此代码不一定错,但若是针对这道题来说有需改正之处。

根据题目描述,“输入一行六个非负整数表示 ABCDEF, 六个数均不超过 10^7。”

然而在该代码中,使用了 scanf("%lf %lf %lf %lf %lf %lf",&a,&b,&c,&d,&e,&f) 以读取六个 double 类型的浮点数,而非题目描述中所需求解的六个 int 类型的整数(或者 long long 类型)。因此,需替换为对应的 %d 或 %lld。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-10 09:18:48 | 显示全部楼层
太帅了,兄弟,在这里找到了答案。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 01:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表