//用于计算产量的C语言程序:
#include <stdio.h>
//秒产类型:0=不秒产,1=小火炉,2=四转太阳神,3=大火炉,10=酒杯灯,20=二转酒杯灯
int rounds(int time,int level,int type)//计算生产轮次:时间、星级、是否秒产
{
if (type) return (time+23-level)/(25-level);//秒产
else return (time-2)/(25-level);//非秒产
}
int roundslamp(int time,int level)//酒杯灯减产轮数
{
if (time>=90) return 88/(25-level)+1;
else return (time+23-level)/(25-level);
}
int product(int time,int level,int num,int cd,int cost,int type)//净产量:时间、星级、[单产、冷却、耗能、是否秒产]
{
int k,TotalCost,Small=0,all=0;//小火苗轮数,总轮数
int m=time/cd+1;//放置数量
for (k=0;k<m;k++)
{
all+=rounds(time-k*cd,level,type);
Small+=roundslamp(time-k*cd,level);
}
if (cost<10000) TotalCost=m*cost;//耗能不带+的
else TotalCost=m*(cost-10000)+25*m*(m-1);//耗能带+的
if (type==0 || type==2) return all*num-TotalCost;//非秒产或四转太阳神:不吞轮
if (type==1) return (all-2)*num-TotalCost;//小火炉:吞2轮
if (type==3) return (all-1)*num-TotalCost;//大火炉:吞1轮
return (all-2)*num-(Small-2)*type-TotalCost;//酒杯灯:吞2轮小的
}
int BigStove(int time,int level1,int num1,int cost1,int level2,int num2)//大火吞并小火后的净产出:时间、大火配置、小火配置
{
int swallow=0;//吞没量
int origin=product(time,level1,num1,50,cost1,3);
int k,m=time/50+1;//吞没的小火数量
for (k=0;k<m;k++)
swallow+=(time-7*k-2)/(25-level2)-(43*k-2)/(25-level2);
return origin-swallow*num2;
}
void main()
{
int i,j,t,level;
char* name[12]={"9小火","9酒杯","9大火","9暖鸡","9双子","12太阳神","12小火","12酒杯","12大火","12暖鸡","12双子","14太阳神"};
int data[12][4]={{48,7,25,1},{48,7,15,10},{144,50,10150,3},{136,50,125,0},{136,50,200,0},{210,50,200,0},
{96,7,25,1},{96,7,15,20},{144,50,150,3},{180,50,125,0},{204,50,200,0},{280,50,200,2}};//[单产、冷却、耗能、是否秒产]
for(t=1;t<=3;t++)
for (j=0;j<=5;j++)
{
printf("%d分钟产量:",t);
for (i=j;i<=j+6;i+=6)
{
if (i<=4) level=9;
else if (i<=10) level=12;
else level=14;
printf("%s=%d",name[i],product(t*60,level,data[i][0],data[i][1],data[i][2],data[i][3]));
if (j==2)
{
printf("(吞9火=%d ",BigStove(t*60,level,data[i][0],data[i][2],9,48));
printf("吞12火=%d)",BigStove(t*60,level,data[i][0],data[i][2],12,96));
}
else printf("\t");
}
printf("\n");
}
}
2023年06月30日 13点06分
7
我擦 c语言大佬
2023年06月30日 14点06分