POJ 1929

来源:互联网 发布:pkpm钢结构计算软件 编辑:程序博客网 时间:2024/06/06 00:19
题意:1g脂肪中含有9卡路里,1g蛋白质、1g血糖、1g淀粉中含有4卡路里,1g乙醇中含有7卡路里,要求输入脂肪、蛋白质、血糖、淀粉、乙醇的量,都为整数,单位为("%、g、C")不定,输入的每一行是每一份食物中脂肪、蛋白质、血糖、淀粉、乙醇的含量,每一行数据至少有1个数据不为0,单位为("g、C"),以'-'终止本次输入,连续出现两次'-'终止程序。要求输出所有数据中,脂肪所占的百分比,结果保留整数,四舍五入。
复制搜索
复制搜索

思路:利用数学推出所有食物的总卡力路含量和总脂肪含量,算出脂肪所占的百分比。

代码:

#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
int main()
{
   char temp,f1,p1,su1,st1,a1;
   double f,p,su,st,a,sum=0,fat=0;
   int flag=0,flag2;
   while(cin>>temp)
   {
      if(temp=='-')
      {
         flag++;
         if(flag==1){cout<<fixed<<setprecision(0)<<fat/sum*100<<"%"<<endl;fat=sum=0;continue;}
         if(flag==2)break;
      }
      flag=0;flag2=0;
      cin.putback(temp);
      cin>>f>>f1>>p>>p1>>su>>su1>>st>>st1>>a>>a1;
      if(f1=='%'){f/=100.0;flag2=1;}
      else if(f1=='g')f*=9;
      if(p1=='%'){p/=100.0;flag2=1;}
      else if(p1=='g')p*=4;
      if(su1=='%'){su/=100.0;flag2=1;}
      else if(su1=='g')su*=4;
      if(st1=='%'){st/=100.0;flag2=1;}
      else if(st1=='g')st*=4;
      if(a1=='%'){a/=100.0;flag2=1;}
      else if(a1=='g')a*=7;
      if(flag2==1)
      {
         double sum1=0,sum2=0;
         if(f>=1)sum1+=f;
         else sum2+=f;
         if(p>=1)sum1+=p;
         else sum2+=p;
         if(su>=1)sum1+=su;
         else sum2+=su;
         if(st>=1)sum1+=st;
         else sum2+=st;
         if(a>=1)sum1+=a;
         else sum2+=a;
         sum+=sum1/(1-sum2);
         if(f<1)fat+=f*(sum1/(1-sum2));
         else fat+=f;
      }
      else 
      {
         sum+=f+p+su+st+a;
         fat+=f;
      }
   }
   return 0;
}
原创粉丝点击