World Cup
题目描述
世界杯来了!!!自然,足球博彩也变得炙手可热。现在有n家博彩公司针对比赛的胜负平给出不同的赔率(比如,赔率为1赔1.5,即如果下注1块钱,猜对了会获得1.5元,盈利0.5元),请问是否有一种策略可以保证一定赢钱?
输入
第一行是一个整数T(1≤T≤1000),表示样例的个数。 每个样例的第一行是一个整数n(1≤n≤10),表示博彩公司的数量。 以后的每行包括三个浮点数,w,d,l(1.0
输出
每行输出一个样例的结果,如果存在必赢的策略,输出"Yes";否则输出"No"。
样例输入
2 2 1.3 4.8 10.5 1.4 4.0 9.7 2 1.3 5.6 9.8 1.45 5.0 8.9样例输出
No Yes
下面来自百度查到的相关赔率的意义:
赔率其实就是回报率,奖金跟赔率有关,赔率越高说明出现的概率越低,一旦高赔率打出说明比赛或者结果很可能出现了冷门。
不过这个赔率是,在没有中间商赚差价下的理想情况。而现实中,博彩公司当然是要赚钱的。
他们挣钱的方式,就是降低赔率,从押注的总资金中抽成。我们继续去看刚才的例子,押巴西的资金是80元,押阿根廷的是20元。如果彩公司想从中赚5块钱的话,就可以把阿根廷队赢球的赔率,从1赔5调低到1赔4.75;巴西队从1赔1.25,调低到1赔1.19。
这样一来,博彩公司的总收入是100元,但无论巴西还是阿根廷赢球,都只需要给出95元稳赚5%。这就是博彩公司赚钱的方法,这5%就相当于押注者给博彩公司交的手续费。
#include
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
double a=0,b=0,c=0;
while(n--)
{
double w,d,l;
scanf("%lf%lf%lf",&w,&d,&l);
if(w>a)
a=w;
if(d>b)
b=d;
if(l>c)
c=l;
}
double sum=1/a+1/b+1/c;
if(sum<=1)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
比例
题目描述
如下图:
已知BD:DA=a:b, AE:EC=c:d, FC:FB=e:f,求DG:GF。
输入格式
第一行是一个整数T (1≤T≤1000),表示样例的个数。
以后每行6个整数,依次为a,b,c,d,e,f (1≤a,b,c,d,e,f≤1000)。
输出格式
依次每行输出一个样例的结果,为两个整数x和y,两者之间有一个空格,x和y互质。
样例输入
1 4 1 2 1 1 2样例输出
12 5
#include
int main()
{
int T;
scanf("%d",&T);
while (T --)
{
int a, b, c, d, e, f;
scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f);
int fm = a * c * (f + e);
int fz = f * d * (a + b);
int m = fz, n = fm;
while (n != 0)
{
int t = m % n;
m = n;
n = t;
}
printf("%d %d\n",fm/m,fz/m);
}
}
Alice and Bob
题目描述
Alice喜欢n位数,Bob喜欢能被m整除的数,请问被Alice和Bob都喜欢的数有多少个?
输入
第一行是一个整数K(K≤10000),表示样例的个数。
每个样例是一行,两个整数n(1≤n≤18),m(2≤m≤1000000)。输出
每行输出一个样例的结果。
样例输入
4 1 2 3 2 3 3 3 10000样例输出
5 450 300 0
#include
int main()
{
int T;
scanf("%d",&T);
while (T --)
{
int n, m;
scanf("%d%d",&n,&m);
__int64 a = 1, b = 1;
for (int i = 1; i < n; i ++ )
{
a *= 10;
b *= 10;
}
__int64 x = (a * 10 - 1) / m + 1;//除以整数会向下取整
__int64 y = (b - 1) / m + 1;
__int64 cnt = x - y;
if (n == 1)
{
cnt ++;
}
printf ("%I64d\n",cnt);
}
}
Description
三角形
题目描述
已知两个三角形的三条边的长度,请问它们是否相似?
输入
第一行是一个整数T(1≤T≤1000),表示样例的个数。 每个样例占两行,每行为三个整数a,b,c1≤a,b,c≤1000,表示一个三角形的边长。 输入数据保证三条边一定能构成三角形。
输出
依次输出每个样例的结果,如果相似,输出"Yes",否则输出"No"。
样例输入
2 3 4 5 3 3 3 3 4 5 6 8 10样例输出
No Yes
#include
int main()
{
int T;
scanf("%d",&T);
while (T --)
{
double a, b, c, a1, b1, c1;
double x, y, z, x1, y1, z1;
scanf("%lf%lf%lf",&a,&b,&c);
scanf("%lf%lf%lf",&x,&y,&z);
//排序(从小到大)
if (a >= b && a >= c && b >= c) a1 = c, b1 = b, c1 = a;
if (a >= b && a >= c && b <= c) a1 = b, b1 = c, c1 = a;
if (b >= a && b >= c && a >= c) a1 = c, b1 = a, c1 = b;
if (b >= a && b >= c && a <= c) a1 = a, b1 = c, c1 = b;
if (c >= a && c >= b && a <= b) a1 = a, b1 = b, c1 = c;
if (c >= a && c >= b && a >= b) a1 = b, b1 = a, c1 = c;
if (x >= y && x >= z && y >= z) x1 = z, y1 = y, z1 = x;
if (x >= y && x >= z && y <= z) x1 = y, y1 = z, z1 = x;
if (y >= x && y >= z && x >= z) x1 = z, y1 = x, z1 = y;
if (y >= x && y >= z && x <= z) x1 = x, y1 = z, z1 = y;
if (z >= x && z >= y && x <= y) x1 = x, y1 = y, z1 = z;
if (z >= x && z >= y && x >= y) x1 = y, y1 = x, z1 = z;
if (a1 / x1 == b1 / y1 && b1 / y1 == c1 / z1) printf ("Yes\n");
else printf("No\n");
}
return 0;
}