PKU 3369 Grocery store 题解

PKU 3369 Grocery store 题解

题目描述看了半天才看懂
就是找到四个**.**这样的数字但是最小是00.01
然后让这个四个数字的和等于四个数字的乘积
当时感觉暴力绝对超时就没写
后来别的题目写完了就没得写了
开始用暴力写这个当时别人已经用暴力把这个过了
然后开始写,先开始用实数来写的估计是因为精度问题一直不对
后来越写越郁闷
直接把程序全删除了。然后理清思路直接用整数来完成了一个就过了。
这个题可以先多枚举一些然后吧答案全都打出来
然后就可以知道第一个数第二个数。。。每个位置的数所能达到的最大值
然后以后搜索的时候只枚举到这个位置就好了
然后就过了
 1 #include < stdio.h >
 2 #include < math.h >
 3 int  main()
 4 {
 5    //freopen("asdas.txt","w",stdout);
 6    int i,j,k,t;
 7    for(i=1;i<160;i++)
 8        for(j=i;j<1000;j++)
 9            for(k=(2000-i-j)/2-1;k>=j;k--)
10            {
11                if(i*j*k<=1000000)break;
12                if(  ((i+j+k)*1000000)%(i*j*k-1000000)==0  )
13                {
14                    t=((i+j+k)*1000000)/(i*j*k-1000000);
15                    if(t+i+j+k>2000)continue;
16                    if(t<k)continue;
17                    //printf("%d %d %d %d\n",i,j,k,t);
18                    printf("%.2lf %.2lf %.2lf %.2lf\n",i/100.0,j/100.0,k/100.0,t/100.0);
19                }

20            }

21    return 0;
22}

23
24
25

你可能感兴趣的:(PKU 3369 Grocery store 题解)