HDU 1030 数学题

Posted cxchanpin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 1030 数学题相关的知识,希望对你有一定的参考价值。

给出两点,求这两点在图上的最短路径


分别以最上,左下,右下为顶点,看这个三角图形

ans=这三种情况下两点的层数差

#include "stdio.h"
#include "string.h"
#include "math.h"
int main()
{
    int n,m,sn,sm,rn,rm,ln,lm,ans;
    while (scanf("%d%d",&n,&m)!=EOF)
    {
        sn=sqrt(n);
        if (sn*sn!=n) sn++; // 以最上为定点所在的层数
        sm=sqrt(m);
        if (sm*sm!=m) sm++;

        ln=(n-(sn-1)*(sn-1))/2+1+(sm-sn); // 以左下为顶点所在的层数
        lm=(m-(sm-1)*(sm-1))/2+1;

        rn=(sn*sn-n+1)/2+1+(sm-sn); // 以右下为顶点所在的层数
        rm=(sm*sm-m+1)/2+1;

        ans=fabs(sn-sm)+fabs(ln-lm)+fabs(rn-rm);

        printf("%d\n",ans);
    }
    return 0;
}


以上是关于HDU 1030 数学题的主要内容,如果未能解决你的问题,请参考以下文章

hdu 1030 Delta-wave

hdu 1030 Delta-wave

hdu_1030 求先序排列

HDU - 1030 Delta-wave

LightOJ1030(数学概率与期望)

HDU6038-Function-数学+思维-2017多校Team01