郭、王两位大侠同上终南山习武,两人最初的战力值均为100。王大侠骨骼清奇,天赋较高,每练功一天,战力增加2‰,郭大侠比较愚笨,每练功一天,战力增加1‰。如果休假一天不练,两人的战力均减少1‰。相较于王大侠,郭大侠更加勤奋,日日练功,从不休息,而王大侠,则三天打渔,两天晒网,也就是每5天的前三天练功,后两天休假。
--------------------------------------------
请编写程序,计算N天之后,郭大侠和王大侠战力分别是多少
输入格式:整数N
输出格式:\n郭的战力值,王的战力值\n
说明:均保留5位小数,以英文逗号分隔
输入样例:5\n
输出样例:100.50100,100.40010
通过读题易知:
1.郭大侠每天练功,战力一天增长1‰
2.王大侠每五天中的前三天练功,战力一天增长2‰;每五天中的后两天休息战力一天减少1‰
--------------------------------------------
代码:
#include<stdio.h>
int main(){
double a=100.00000,b=100.00000;
int i,N,m,n,j;
scanf("%d",&N);
/*郭*/
for (i=1;i<=N;i++)
b=b*1.001;
/*王*/
m=N/5;
n=N%5;
/*1--4*/
if(N/5==0&&N%5>0){
switch(n){
case 1:{a=a*1.002;
break;
}
case 2:{for (i=1;i<=2;i++)
a=a*1.002;
break;
}
case 3:{for (i=1;i<=3;i++)
a=a*1.002;
break;
}
case 4:{for (i=1;i<=3;i++)
{a=a*1.002;}
a=a*0.999;
break;
}
}}
/*5及5的倍数*/
if(N/5>0&&N%5==0){
for(i=1;i<=m;i++){
for (j=1;j<=3;j++)
a=a*1.002;
for (j=1;j<=2;j++)
a=a*0.999;
}
}
/*不是5的倍数也不是1--4*/
if(N%5>0&&N/5>0){
for(i=1;i<=m;i++){
for (j=1;j<=3;j++)
a=a*1.002;
for (j=1;j<=2;j++)
a=a*0.999;
}
switch(n){
case 1:{a=a*1.002;
break;
}
case 2:{for (i=1;i<=2;i++)
a=a*1.002;
break;
}
case 3:{for (i=1;i<=3;i++)
a=a*1.002;
break;
}
case 4:{for (i=1;i<=3;i++)
{a=a*1.002;}
a=a*0.999;
break;
}
default:break;
}
}
printf("%.5f,%.5f",b,a);
return 0;
}