/ Vijos / 题库 / HzzStep /

题解

13 条题解

  • 0
    @ 2012-11-03 15:27:34

    ├ 测试数据 01:答案正确... (0ms, 412KB)

    ├ 测试数据 02:答案正确... (0ms, 412KB)

    ├ 测试数据 03:答案正确... (0ms, 412KB)

    ├ 测试数据 04:答案正确... (0ms, 412KB)

    ├ 测试数据 05:答案正确... (0ms, 412KB)

    ├ 测试数据 06:答案正确... (0ms, 412KB)

    ├ 测试数据 07:答案正确... (0ms, 412KB)

    ├ 测试数据 08:答案正确... (0ms, 412KB)

    ├ 测试数据 09:答案正确... (0ms, 412KB)

    ├ 测试数据 10:答案正确... (0ms, 412KB)

    ├ 测试数据 11:答案正确... (0ms, 412KB)

    ├ 测试数据 12:答案正确... (0ms, 412KB)

    ├ 测试数据 13:答案正确... (0ms, 412KB)

    ├ 测试数据 14:答案正确... (0ms, 412KB)

    ├ 测试数据 15:答案正确... (0ms, 412KB)

    ├ 测试数据 16:答案正确... (0ms, 412KB)

    ├ 测试数据 17:答案正确... (0ms, 412KB)

    ├ 测试数据 18:答案正确... (0ms, 412KB)

    ├ 测试数据 19:答案正确... (0ms, 412KB)

    ├ 测试数据 20:答案正确... (0ms, 412KB)

    ---|---|---|---|---|---|---|---|-

    Accepted / 100 / 0ms / 412KB

    简单的找规律

  • 0
    @ 2012-10-06 19:16:50

    第一次写题解。

      var

    x,y:int64;

      begin

    read(x,y);

    if x>=0 then

    if (y>-x) and (y=0 then

    writeln(sqr(2*y)-y-x) else

    writeln(sqr(2*-y+1)+y+x-1) else

    if (y>=x) and (y=0 then

    writeln(sqr(2*y)-y-x) else

    writeln(sqr(2*-y+1)+y+x-1);

      end.

  • 0
    @ 2012-09-22 02:02:42

    最后一个点过不了,求助!!!

    var x,y,i,n,m:longint;

    ans:array[0..100]of int64;

    procedure carrybit;

    var i:longint;

    begin

    for i:=2 to m do

    begin

    ans[i]:=ans[i]+(ans div 10);

    ans:=ans mod 10;

    end;

    while ans[m]>=10 do

    begin

    inc(m); ans[m]:=ans[m]+(ans[m-1] div 10);

    ans[m-1]:=ans[m-1] mod 10;

    end;

    end;

    function max(l,r:longint):longint;

    begin

    if l>r then exit(l) else exit(r);

    end;

    begin

    fillchar(ans,sizeof(ans),0);

    readln(x,y); n:=max(abs(x),abs(y)); m:=0;

    while n0 do

    begin

    inc(m); ans[m]:=n mod 10; n:=n div 10;

    end;

    n:=max(abs(x),abs(y));

    for i:=1 to m do ans[i]:=ans[i]*(n-1)*4;

    carrybit;

    if (x=0)and(y>0) then ans[1]:=ans[1]+3*n else

    if (x=0)and(y0) then ans[1]:=ans[1]+n else

    if (y=0)and(x0)and(y>0) then ans[1]:=ans[1]+2*n-x+y else

    if (x>0)and(y

  • 0
    @ 2012-08-21 09:46:22

    为毛把double改成__int64就过了 ?!

  • 0
    @ 2012-08-20 15:41:54

    #include

    #include

    using namespace std;

    __int64 x,y,maxlen,ans;

    __int64 ab(__int64 a)

    {

    if(ab) return a;

    else return b;

    }

    int main()

    {

    scanf("%I64d%I64d",&x,&y);

    maxlen=max(ab(x),ab(y));

    ans=(1+maxlen)*maxlen*4;

    //printf("%lld\n",ans);

    if(ab(x)

  • 0
    @ 2012-08-19 15:48:27

    Flag    Accepted

    题号   P1712

    类型(?)   其它

    通过   68人

    提交   128次

    通过率   53%

    难度   0

    第68个,挺吉利的

    Accepted / 100 / 397ms / 580KB

    就是找规律,方法不止一种

  • 0
    @ 2012-08-19 11:49:16

    果然我这种弱逼只会做这种题

  • 0
    @ 2012-08-19 11:46:28

    完全O(1)复杂度和long long的精度啊。。不懂楼下在搞些什么。。

    #include

    #include

    #include

    using namespace std;

    typedef long long ll;

    ll x,y,maxr,ans;

    inline ll sum(ll n)

    {return n*(n+1)/2;}

    int main()

    {

    cin >> x >> y;

    maxr=max(abs(x),abs(y));

    if(maxr==y) ans=2*sum(y*2-1)+y-x;

    else if(maxr==-y) ans=2*sum((-y)*2)+x-y;

    else if(maxr==x) ans=sum(x*2-1)+sum((x-1)*2)+y+(x-1);

    else if(maxr==-x) ans=sum((-x)*2)+sum((-x)*2-1)+(-x)-y;

    cout

  • 0
    @ 2012-08-19 13:19:58

    晕,数据范围搞错了,

    (10^8)^2=10^16还是在int64内。没意识到,写了差不多一个钟的高精度。。。

  • 0
    @ 2012-08-19 08:19:44

    为什么O(1)还是不能0ms呢?

  • 0
    @ 2012-08-19 17:35:17

    C语言表示用long long 的话50分,但我换成VS的标准用__int64的话就AC了= =,表示第一题还坑了我20分= =,共坑70分

    详情见这里= =

    http://blog.csdn.net/shiwei408/article/details/7463476

    这次用是WINDOWS下的GCC编译,自然就被坑了= =

  • 0
    @ 2012-08-19 03:52:51

    这。。。。通过率300% 有够吓人的

  • 0
    @ 2012-08-19 03:25:00

    找规律o(1)秒过

  • 1

信息

ID
1712
难度
4
分类
其他 | 数学 点击显示
标签
(无)
递交数
342
已通过
153
通过率
45%
上传者