POJ 1929
2013-06-10 12:29
363 查看
题意: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;
}
复制搜索
复制搜索
思路:利用数学推出所有食物的总卡力路含量和总脂肪含量,算出脂肪所占的百分比。
代码:
#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;
}
相关文章推荐
- 由poj&nbsp;1067引发的——取石子游…
- poj 1276 Cash Machine
- poj 3667 Hotel
- poj&nbsp;1975&nbsp;Median&nbsp;Weight&nbsp;Bead(floy…
- poj&nbsp;3041&nbsp;Asteroids&nbsp;(匈牙利)
- poj 1436 Horizontally&…
- poj&nbsp;2892&nbsp;Tunnel&nbsp;Warfare(线段树…
- poj&nbsp;2392&nbsp;Space&nbsp;Elevator(多重背包…
- poj&nbsp;2828&nbsp;Buy&nbsp;Tickets(线段树)
- poj&nbsp;1144&nbsp;Network(割点)
- poj&nbsp;1679&nbsp;The&nbsp;Unique&nbsp;MST(kruskal)
- POJ&nbsp;2005
- poj 2251
- Distant Galaxy poj 3141
- poj 1135 有点弯的最短路运用
- poj 3694 中等难度的双…
- 经典POJ题目 (转)
- POJ 1674 Sorting by Swapping(需…
- poj 2104_变种快排
- ACM: 方向dfs + bfs求最短路 poj 3…