为什么??????

B2065 鸡尾酒疗法

KOGU @ 2024-03-04 17:52:19

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n,x,y;
    cin>>n;
    for(int i=1;i<n;i++){
        cin>>x>>y;
        if(y-x>0.05){
            cout<<"better"<<endl;
        }
        else  if(y-x<0.05){
            cout<<"worse"<<endl;
        }
        else{
            cout<<"same"<<endl;
        }
    }
    return 0;
}

by xiao2011 @ 2024-03-04 18:30:29

这样写的结果应该不是一起输出的,而是输入一个输出一个


by xirunzhao @ 2024-03-04 18:38:31

注意效率是百分比,循环有问题


by xirunzhao @ 2024-03-04 18:38:45

@xiao2011 不是吧


by Carrie2718 @ 2024-03-04 18:58:36

1.是求百分比 如果输入的是x, y,需要求一个z(y / x)

cin >> x >> y;
z = (y / x);

然后跟第一行的,进行比较 2.未输入第一行的数据 我这一段是这么打的

for(int i=1;i<n;i++)

总共(n + 1)组,第一行为鸡尾酒疗法的数据,后面n行是鸡尾酒疗法的数据 3.一个是y - x, 另一个是x - y(这里的x是第一行算出的百分比, y是后面行算出百分比)

if (y - x > 0.05)
    printf("better\n");
else if(x - y > 0.05)
    printf("worse\n");
else
    printf("same\n");

本人是这样打的,感觉有点冗长,还需要优化,可以参考一下

#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
    long long n;
    scanf("%lld", &n);
    double a[n] [3];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < 2; j++)
            scanf("%lf", &a[i] [j]);
        a[i] [2] = (a[i] [1] / a[i] [0]);
    }
    for (int i = 1; i < n; i++)
    {
        double x = a[0] [2];
        double y = a[i] [2];
        if (y - x > 0.05)
            printf("better\n");
        else if(x - y > 0.05)
            printf("worse\n");
        else
            printf("same\n");
    }
    return 0;
}

by Carrie2718 @ 2024-03-04 19:03:58

实在是忘了,好久没看这题了,是总共n组,抱歉


by KOGU @ 2024-03-05 12:36:32

thank you very much


|