这道题需要注意一个点,浮点数的误差问题
判断里的0.3*a[i]换成3*a[i]/10就过了
这个后面还要专门研究一下
#include <iostream> #include <string> #include <cstring> #include <cstdlib> #include <cstdio> #include <cmath> #include <algorithm> #include <stack> using namespace std; #define mem(a,b) memset(a,b,sizeof(a)) #define pf printf #define sf scanf #define debug printf("! ") #define INF 10000 #define MAX(a,b) a>b?a:b #define blank pf(" ") #define LL long long int m[10],sub[10]; int val[]={500,1000,1500,2000,2500}; int main() { int i,j,r,t; for(i=0;i<5;i++) sf("%d",&m[i]); for(i=0;i<5;i++) sf("%d",&sub[i]); sf("%d%d",&r,&t); int res = 0; for(i=0;i<5;i++) { res+=MAX(0.3*val[i],(1-((double)m[i]/250))*val[i]-50*sub[i]); } res+=(100*r-50*t); pf("%d ",res); return 0; }