F可编程拖拉机比赛

题目意思:
给你一个数,你要计算这个数的0.1,0.2,0.3(对应分别拿金,银,铜的人数),最后拿总数减去拿这几种牌子的人就是拿铁牌的人
分别向上向下取整值为多少,然后计算每个数的向上向下取整后,根据变化,算多少人的奖牌应该换
题目样例115,这里以115为例:

名称 0.1 0.2 0.3
向下取整 11 23 34 115-11-23-34=47
向上取整 12 23 35 45

接下来展示换牌的计算方式
(x[0]为11,y[0]为23,z[0]为34,w[0]为47,w[1]为35,其他类推)
原本按照向下取整发,实际按照向上发

ans1=银->金=x[1]-x[0]

y[1]-y[0]=银牌变化量=银牌增加量-银牌减少量=(铜->银)-(银->金)
ans2=(铜->银)=(银->金)+(y[1]-y[0]);

z[1]-z[0]=铜牌变化量(后面和银牌变化量开始都一样)
或者
ans3=(铁->铜)就是铁牌变化量
终于写完了,上代码
#include<bits/stdc++.h>
using namespace std;
int arr[21],brr[21],crr[21];
int main()
{
	int n;
	cin>>n;
	double n1=n;
    //这边存int n,n/10就是直接向下取整
    //floor也能直接向下取整(取整得要对浮点型数据才有用,整形没必要)
	int x[2]={0,0},y[2]={0,0},z[2]={0,0},w[2]={0,0};
	int ans[4];
	for(int i=0;i<4;i++)ans[i]=0;
	x[0]=n/10;
	y[0]=(n*0.2);
	z[0]=n*0.3;
	w[0]=n-x[0]-y[0]-z[0];
	x[1]=ceil(n1/10);
	y[1]=ceil(n1*0.2);
	z[1]=ceil(n1*0.3);
	w[1]=n-x[1]-y[1]-z[1];
	ans[0]=fabs(x[1]-x[0]);
	ans[1]=fabs(y[1]-y[0]);
    ans[2]=fabs(z[1]-z[0]);
    ans[3]=fabs(w[1]-w[0]);

//    cout<<x[0]<<" "<<x[1]<<endl;
//    cout<<y[0]<<" "<<y[1]<<endl;
//    cout<<z[0]<<" "<<z[1]<<endl;
//    cout<<w[0]<<" "<<w[1]<<endl;
//    
//    for(int i=0;i<4;i++)cout<<"ans["<<i<<"]="<<ans[i]<<" ";
//    cout<<endl;
    
    cout<<ans[0]<<" "<<ans[1]+ans[0]<<" "<<ans[3]<<" ";
	return 0;
 }