zoukankan      html  css  js  c++  java
  • 题解 UVA10812 Beat the Spread!

    题解 UVA10812 Beat the Spread!

    这里提供一份良(mei)心(yong)的:

    题目翻译

    题目描述

    超级碗冠军比赛-文斯·隆巴迪杯赛快到了。为了打发等待半场广告和服装故障(?)的时间,当地黑客组织了一个游戏投注池。会员们把赌注押在最后两个得分的总和上,或押在两个得分之差的绝对值上。根据每场赌注的中将好吗,你能推断出最后的得分吗?

    输入格式

    第一行一个 (n) ,表示测试数据的数量。

    接下来 (n) 行,每行代表一组测试数据。每组测试数据都给出非负整数 (s)(t) ,分别表示两个得分之和与差的绝对值。

    输出格式

    对于每组测试数据,输出一行两个最终得分,大的在前。若不存在这样的得分,输出 "inpossible" 回想一下,足球得分恒非负。

    题目大意

    对于每组数据,输入 (a+b)(|a-b|) ,求出 (a)(b) 的值。

    题目思路

    题目要求先输出较大数,那我们假设对于两个得分有 (a ge b) ,则有一元二次方程组:

    [egin{cases}a+b=s\a-b=tend{cases} ]

    自然地联想到消元法:

    两式相加得:

    [2a=s+tRightarrow a=frac{s+t}{2} ]

    两式相减得:

    [2b=s-tRightarrow b=frac{s-t}{2} ]

    题目要求 (a)(b) 都为整数,故当 (s+t) 为奇数时一定不符合题意,输出 ( extit{impossible})

    另外考虑 (s)(t) 都是正整数故不存在 (s+t<0) 的情况,所以当 (s-t<0) 时输出 ( extit{impossible})

    Code

    #include<bits/stdc++.h>
    using namespace std;
    long long s,t,n;
    int main()
    {
    	cin>>n;
    	while(n--)
    	{
    		cin>>s>>t;
    		if(s+t<0||s-t<0||(s+t)%2) puts("impossible");
    		else printf("%d %d
    ",(s+t)/2,(s-t)/2);
    	}
    	return 0;
    }
    
  • 相关阅读:
    反射(8)程序集反射 Type 类
    反射(5)CLR 运行时探测程序集引用的步骤
    反射(1)程序集基础知识
    csc.exe(C# 编译器)
    证书(1)数字签名基础知识
    反射(7)动态程序集加载Load方法
    SignTool.exe(签名工具)
    反射(3)程序集加载 Assembly类
    关于卡巴斯基安全免疫区随笔
    文本提取工具 TextHelper
  • 原文地址:https://www.cnblogs.com/Sure042/p/tijie-uva10812.html
Copyright © 2011-2022 走看看