zoukankan      html  css  js  c++  java
  • 子序列的和

    子序列的和

     

    ①程序

     

    #include<iostream>
    using namespace std;
    int main(void)
    {
    int a,b,kase=0;
    while(scanf("%d%d",&a,&b)!=EOF&&(a||b))
    {
    float s=0;
    for(int i=a;i<=b;i++)
    s+=1/(i*i);
    printf("Case %d: %.5f ",++kase,s);
    }
    return 0;
    }

     

     运行结果

     检查错误

     s+=1/(i*i); 一句类型转换出现错误,尝试把此句改为s+=1.0/(i*i);测试如下:

    case1正确但是case2不对,观察第二组数据,普通的int型数据无法表示最大值达到106*106=1012级别的整数需要使用long long型同时也应该将float改为double,类型转换不靠谱的话使用强制类型转换。将程序中的int型全部改成long long,float改为double,类型转换使用强制转换。

    ②程序修改如下

     

    #include<iostream>
    using namespace std;
    int main(void)
    {
    int kase=0;
    long long a,b;
    while(scanf("%lld%lld",&a,&b)!=EOF&&(a||b))
    {
    double s=0.0;
    for(long long i=a;i<=b;i++)
    s+=1.0/(double)(i*i);
    printf("Case %d: %.5f ",++kase,s);
    }
    return 0;
    }

     测试

     

  • 相关阅读:
    集合的整体
    StringBuffer类中的东西
    ChickHouse安装介绍
    Flink集群搭建
    hadoop-MapReduce总结
    hadoop-hdfs
    linux命令总结
    linux
    shall 2-13
    String 类的其他功能
  • 原文地址:https://www.cnblogs.com/slay/p/9324557.html
Copyright © 2011-2022 走看看