zoukankan      html  css  js  c++  java
  • 算法竞赛入门经典 习题2-4 子序列的和(subsequence)

    算法竞赛入门经典 习题2-4 子序列的和(subsequence)

    输入两个正整数n<m<106,输出 ,保留5位小数。输入包含多组数据, 结束标记为n=m=0。
    提示:本题有陷阱。
    样例输入:
    2 4
    65536 655360
    0 0
    样例输出:
    Case 1: 0.42361
    Case 2: 0.00001
    因为n,m已经很大了,当有乘法或者平方时,很容易溢出
    有两种解决方法,一种是用long long ,避免溢出
    另一种是不算出i*i的值

    #include<iostream>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    int main()
    {
    	int n,m;
    	while(cin>>n>>m)
    	{
    		if(n==0&&m==0) return 0;
    		double sum=0;
    		for(int i=n;i<=m;i++)
    		{
    			long long r=pow(i,2);
    			sum+=(double)1.0/r;
    		}
    		printf("%.5lf
    ",sum);
    	}
    	return 0;
    } 
    

    //这个输出格式有点问题。。。

    #include<stdio.h>
    int main()
    {
    	int n,m,i,k=0;
    	while(scanf("%d%d",&n,&m)!=EOF)
    	{
    		double sum=0;
    		if(n==0&&m==0)
    		{
    			break;
    		}
    		for(i=n;i<=m;i++)
    		{
    			sum=sum+(1.0/i)/i;//换成i*i会有运算结果溢出//
    		}
    		k++;
    		printf("Case %d: %.5lf
    ",k,sum);
    	}
    	return 0;
    } 
    
  • 相关阅读:
    启动docker 服务时 虚拟机端口转发 外部无法访问
    ADC滤波处理的十种方法
    ubuntu卸载软件
    Cannot fetch index base URL http://pypi.python.org/simple/
    pip命令详解
    QT入门
    tensorflow学习-第一章
    opencv学习-第一章
    二叉树详解
    C/C++内存地址划分
  • 原文地址:https://www.cnblogs.com/serendipity-my/p/12632505.html
Copyright © 2011-2022 走看看