艰难的英语单词: tie 英 [taɪ] 平局 n.
题意: 给出三局游戏,每局游戏三个赌注,每个赌注分别叫做 W T L ,每局游戏每个赌注都有倍率,问怎么投使得最赚。输出每局游戏选择的W T L,以及最大利润即可。
难点:没有难点。两个循环。
但是发现一个很奇怪的bug。
对于题目给定的测试样例:
1.1 2.5 1.7
1.2 3.0 1.6
4.1 1.2 1.1
应该输出
37.98
但是我写的代码,如果加上一句pintf进行中间Debug输出过程查看,最终结果就会变成 37.97。注释掉这个 printf 就会变回37.98,迷的不行。是系统的编译器问题,但是具体原因我没有花精力探讨。(刚开始没发现这点,我还以为本题要四舍五入输出。。结果并不需要,还白WA了一发。。。)这个问题就晾在这里好了,诡异的BUG坐等江湖道友有兴趣指点一二~~~
Code: (AC代码)
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
#define inf 10009
#define INF 0x3f3f3f3f
#define loop(x,y,z) for(x=y;x<z;x++)
int game[3];//投注方法
double num[3];
double ans=1;
void Input()
{
int i,j,k;
loop(i,0,3)
{
scanf("%lf%lf%lf",&num[0],&num[1],&num[2]);
k=0;
loop(j,1,3)
if(num[j]>num[k])k=j;
game[i]=k;//这局游戏j最大
ans*=num[k];//printf("%.2f\n",ans);
}
ans=(ans*0.65-1)*2;
}
void Output()
{
int i;
loop(i,0,3)
if(game[i]==0)
printf("W ");
else if(game[i]==1)
printf("T ");
else
printf("L ");
//ans=(ans*100)+0.5;
//ans/=100;
printf("%.2f\n",ans);
}
int main()
{
Input();
Output();
return 0;
}
取消掉上面的注释,就会出现37.97了。。。就是这样的截图:
诡异emmmm......