题解

151 条题解

  • 0
    @ 2015-02-01 19:18:14

    此题很水,步步模拟既可

    c++ code

    #include<cstdio>
    using namespace std;
    int main()
    {
    int n,sum=1,i=1,j=1;
    bool p=0;
    scanf("%d",&n);
    while (n!=sum)
    {
    if ((p?j-1:i-1)!=0)
    p?(++i,--j):(--i,++j);
    else
    {
    p?++i:++j;
    p=!p;
    }
    ++sum;
    }
    printf("%d/%d\n",i,j);
    return 0;
    }

  • 0
    @ 2014-08-12 14:33:17

    #include<iostream>
    using namespace std;
    main()
    {
    long long n,x,i=0,sum=0,j,z,m;
    cin>>n;
    do
    {
    i++;
    sum+=i;
    }
    while(sum<n);
    j=i-1;
    z=j-sum+n+1;
    m=sum-n+1;
    if(j%2!=0)
    if(m==1)
    cout<<z;
    else
    cout<<z<<"/"<<m;
    else
    if(z==1)
    cout<<m;
    else
    cout<<m<<"/"<<z;
    }

  • 0
    @ 2014-06-26 15:48:02

    program cantor;
    var n,x,i,sum,j,z,m:int64;
    begin
    readln(n);
    i:=0;sum:=0;
    repeat
    i:=i+1;
    sum:=sum+i;
    until sum>=n;
    j:=i-1;
    z:=j-(sum-n)+1;
    m:=1+(sum-n);
    if j mod 2<>0 then
    if m=1 then
    writeln(z)
    else writeln(z,'/',m)
    else if z=1 then
    writeln(m)
    else writeln(m,'/',z);
    end.

  • 0
    @ 2014-04-10 17:17:22

    program p1333;
    var
    a,b,c,i,j:longint;
    begin
    read(a);c:=a;
    b:=1;
    while c>0 do begin
    dec(c,b);
    inc(b);
    end;
    if c=0 then begin writeln(1,'/',b-1);halt;end;
    c:=c+b;dec(b);
    if b mod 2=0 then writeln(c-1,'/',b-c+2)else
    writeln(b-c+2,'/',c-1);
    end.

  • 0
    @ 2014-01-07 19:35:12

    不是很难,只要分析一下,然后数学要求也不是很高.当然,可以用*数学优化*,**但是好这道题范围较小,无需优化了.**

  • 0
    @ 2013-11-07 10:23:35

    var
    i,j,n,k,b:longint;
    f:boolean;
    begin
    readln(n); f:=false;
    for k:=1 to n do
    begin
    for b:=1 to k do
    begin
    n:=n-1;
    if n=0 then begin f:=true;i:=b;break; end;
    end;
    if f then begin j:=k;break; end;
    end;
    if j mod 2=0 then writeln(i,'/',j-i+1)
    else writeln(j-i+1,'/',i);
    end.

  • 0
    @ 2013-10-17 17:14:00

    var n,a,b,c,q:longint;
    i:integer;
    begin
    read(n);
    for i:=1 to 10000 do
    if n<=(2*i*i-i) then begin
    q:=i;
    break;
    end;
    a:=2*q-1;
    b:=n-(2*(q-1)*(q-1)-(q-1));
    if b>a then b:=2*a-b;
    for i:=1 to 10000 do
    if n<=(2*i*i+i) then begin
    q:=i;
    break;
    end;
    a:=2*q;
    c:=n-(2*(q-1)*(q-1)+(q-1));
    if c>a then c:=2*a-c;
    writeln(b,'/',c);
    end.

  • 0
    @ 2013-10-08 19:54:00

    明明是这么一道水题,我居然4次WA。。。
    我模拟了1-9数据都是对的,以为就没错了,交上去就WA。
    一开始果断以为是精度不够,加了发现依然WA。
    再发现自己斜杠打反了,改掉又一次WA。
    再回来跑了一下数据,发现第10组开始出错。。。
    再差一下发现少打一行i++。。。不能更悲催了。。。
    C++ Code:
    #include <iostream>
    using namespace std;
    int main(){
    long long n;
    cin>>n;
    long x=1;
    long y=1;
    long now=1;
    long i=1;
    while(1){
    if(now==n){
    break;
    }
    now++;
    x++;
    if(now==n){
    break;
    }
    for(long k=1;k<=i;k++){
    x--;
    y++;
    now++;
    if(now==n){
    break;
    }
    }
    i++;
    if(now==n){
    break;
    }
    y++;
    now++;
    if(now==n){
    break;
    }
    for(long k=1;k<=i;k++){
    x++;
    y--;
    now++;
    if(now==n){
    break;
    }
    }
    i++;
    if(now==n){
    break;
    }
    }
    cout<<y<<'/'<<x;
    }

  • 0
    @ 2013-08-25 19:09:05

    坑AC率的,手测全对交上去全错

  • 0
    @ 2013-07-22 18:52:37

    AC的第50道

  • 0
    @ 2013-05-31 19:06:08

    program shulie;
    var i,q,w,k:longint;
    begin

    readln(k);
    case k of
    1:begin writeln('1/1'); end;

    else begin
    for i:=1 to 4472 do
    if ((1+i)*i)div 2>=k then begin q:=i; break; end;
    w:=k - ((q*(q-1))div 2);
    if odd(q) then writeln(q-w+1,'/',w)
    else writeln(w,'/',q-w+1); end;
    end;

    end.

    • @ 2014-05-10 09:05:28

      手動頂答案。

    • @ 2014-05-10 09:07:26

      可是求q不夠有效率,可以用不等式q(q-1)/2<k。

  • 0
    @ 2013-04-18 10:04:09

    呆呆
    第一次居然没考虑Z 字型

  • 0
    @ 2012-11-09 09:40:54

    这么水的题WA了2次才过。。。。确实大意了。。。。

    明日NOIP,见一水题,刷之以应决赛!

    点这里查看程序源码+详细题解

  • 0
    @ 2012-11-04 22:19:07

    水题,睡前把它刷了

    var

    i,j,k,l,m,n,o,p:longint;

    begin

    readln(n);

    for i:=1 to maxlongint do

    begin

    if p+i>=n then break;

    p:=p+i;

    end;

    inc(i);

    if odd(i) then writeln(n-p,'/',i-(n-p))

    else writeln(i-(n-p),'/',n-p)

    end.

  • 0
    @ 2012-10-12 19:26:01

    program P1333;

    var

    n,i,j,k,m:longint;

    l:real;

    begin

    read(n);

    for i:=1 to n do

    begin

    j:=j+i;

    k:=k+1;

    if j>=n then break;

    end;

    m:=k+1;

    l:=n-0.5*(k-1)*k;

    if k mod 2=0 then write(trunc(l),'/',trunc(m-l)) else write(trunc(m-l),'/',trunc(l)); 

    end.

    16行......

  • 0
    @ 2012-08-19 18:10:25

    模拟也能过~~~~~~~

    太水了

    var n,k,i,j:longint;

    begin

    readln(n);

    k:=0;

    i:=1;

    while kn do

    begin

    inc(i);

    for j:=1 to i-1 do

    begin

    inc(k);

    if k=n then break;

    end;

    if (j

  • 0
    @ 2010-04-15 18:59:36

    我的程序瘦瘦的,36行,589B

  • 0
    @ 2010-03-18 23:05:47

    water!又见water!不过还是栽了坑!把'/'打成了'\'

  • 0
    @ 2009-11-09 11:23:51

    这个…………坎为水,大凶。

    哥果断抄代码悲剧了。

  • 0
    @ 2009-11-06 20:50:20

    第200题。。。

信息

ID
1333
难度
3
分类
数论 点击显示
标签
递交数
3683
已通过
1961
通过率
53%
被复制
20
上传者