1.让小数与大数逐渐靠近只能让小数除以0.08,让大数除以0.1。
2.让所得结果向上取整,之后取两者最大值maxx。
3.回溯,用maxx分别乘以0.1和0.08并向下取整看看能否与之前的两个数相等。
4.相等就输出maxx,不相等就输出-1。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
scanf("%d %d",&a,&b);
int a1=ceil(a*1.0/0.08),b1=ceil(b*1.0/0.1);
int maxx=max(a1,b1);
int max1=floor(maxx*0.08);
int max2=floor(maxx*0.1);
if(max1==a&&max2==b)
{
printf("%d",maxx);
}
else
{
printf("-1");
}
return 0;
}
该程序通过将输入的小数和大数分别除以0.08和0.1,然后取它们的天花板值,找到两者之间的最大值。接着,将最大值乘以0.08和0.1并向下取整,检查是否能还原原来的数。如果可以,则输出最大值;否则输出-1。这是一个涉及数值计算和条件判断的算法问题。
1310

被折叠的 条评论
为什么被折叠?



