• 反思


    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    
    int main(){
    	int a,b,c1,c2;
    	double ans,x,y;
    	scanf("%d %d", &a, &b);
    	if(a<b){
    		puts("-1");
    	}
    	else if(a==b){
    		printf("%d
    ", a);
    	}else{
    		double x = a - b, y = a + b;
            int c1 = x/b/2, c2 = y/b/2;
            ans = min(x / c1 / 2, y / c2 / 2);
            printf("%.10lf
    ", ans);
    
    	}
    	
    	return 0;
    }
    
     
    没读懂题意 而且。。。 写的错误不堪。。
    注意反思
     A Problem about Polyline
    Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u
    Submit Status

    Description

    There is a polyline going through points (0, 0) – (x, x) – (2x, 0) – (3x, x) – (4x, 0) – ... - (2kx, 0) – (2kx + x, x) – ....

    We know that the polyline passes through the point (a, b). Find minimum positive value x such that it is true or determine that there is no such x.

    Input

    Only one line containing two positive integers a and b (1 ≤ a, b ≤ 109).

    Output

    Output the only line containing the answer. Your answer will be considered correct if its relative or absolute error doesn't exceed 10 - 9. If there is no such x then output  - 1 as the answer.

    Sample Input

    Input
    3 1
    Output
    1.000000000000
    Input
    1 3
    Output
    -1
    Input
    4 1
    Output
    1.250000000000

    Hint

    You can see following graphs for sample 1 and sample 3.

    #include<iostream>
    #include<stdio.h>
    using namespace std;
    int main()
    {
        double x;
        double a,b;
        while(cin>>a>>b)
        {
            if(b>a)
            {
                x=-1;
            }
            else if(b==a)
            {
                x=a;
            }
            else
            {
                double r=(a+b)/2;
                double d=(a-b)/2;
                //cout<<r<<" "<<d<<endl;
                int rr=r/b,dd=d/b;
                while(r/rr<b)
                {
                    rr--;
                }
                while(d/dd<b)
                {
                    dd--;
                }
                //cout<<rr<<" "<<dd<<endl;
                if((double)r/rr>=(double)d/dd)
                {
                    x=(double)d/dd;
                }
    
                else
                {
                    x=(double)r/rr;
                }
            }
            printf("%.12f
    ",x);
        }
    
        return 0;
    }
    
  • 相关阅读:
    今天学会了如何察看SSDT里面的东西、修改里面的地址
    今天。。。。忙了一天
    我承认,我怕,我很怕
    WinCE下的第二个窗口程序
    终于搭好了WinCE上MFC的SDK环境
    原来腾迅的QQ号竟然是个int变量
    操了,编译器,你就不能少给我下几个断么
    谁能教我网络编程阿
    反汇编。。。本来以为很难,原来却这么容易
    PE头里的东西更多。。。越看越恶心了,我都不想看了
  • 原文地址:https://www.cnblogs.com/Geek-xiyang/p/5149665.html
Copyright © 2020-2023  润新知