题解

187 条题解

  • 0
    @ 2009-10-28 15:33:56

    汇编解决之。。。。。。。

    膜拜精通汇编、C++、C、Pascal的Einst神牛。。。。。

    program vijos_1201;

    var

    n,ans:cardinal;

    begin

    readln(n);

    asm

    mov n,%eax

    rol $16,%eax

    mov %eax,ans

    end;

    writeln(ans);

    end.

  • 0
    @ 2009-10-21 13:09:42

    var a:longint;

    begin

    readln(a);

    writeln(swap(a));

    readln;

    end.

  • 0
    @ 2009-10-15 18:12:12

    佩服 aiyx_fyh

  • 0
    @ 2009-10-15 17:02:07

    CHH43看好了>>你是猪!!!!!!!!

  • 0
    @ 2009-10-11 21:02:47

    Var

    n,k:int64;

    i,j:longint;

    a,b:array[1..32] of integer;

    Function mi(x:longint):int64;

    var

    w:int64;

    begin

    w:=1;

    for i:=1 to x do w:=2*w;

    mi:=w;

    end;

    Begin

    readln(n);

    i:=1;

    while n>=1 do

    begin

    a[i]:=n mod 2;

    n:=n div 2;

    i:=i+1;

    end;

    for j:=1 to 16 do b[j]:=a[17-j];

    for j:=17 to 32 do b[j]:=a[49-j];

    for j:=32 downto 1 do

    begin

    if (b[j]=1) then

    k:=k+b[j]*mi(32-j);

    end;

    writeln(k);

    End.

  • 0
    @ 2009-10-08 01:43:33

    把int*指针转化为char*指针一次操作8位。。。

    #include

    void f(char *s)

    {

    char tmp = s[3];

    s[3] = s[1];

    s[1] = tmp;

    tmp = s[2];

    s[2] = s[0];

    s[0] = tmp;

    }

    int main()

    {

    unsigned int n;

    scanf("%u",&n);

    f((char *) &n);

    printf("%u\n",n);

    return 0;

    }

  • 0
    @ 2009-10-06 21:48:35

    Var

    K: LongWord;

    Begin

    Read(K);

    Write(K mod 65536*65536+K Div 65536);

    End.

    何必用什么位运算?

  • 0
    @ 2009-10-03 15:06:37

    program gdwjh;

    var

    n:dword;

    begin

    readln(n);

    writeln((n shr 16)or(n shl 16));

    end.

    学了位运算才懂。

    • @ 2014-02-14 11:15:38

      为什么中间一定要用or 而不能用+?

  • 0
    @ 2009-10-03 11:00:55

    ……

    笨人笨方法

    位运算的不懂

    根本不知道Swap函数的存在

    于是————

    program ex;

    var

    a:array[1..32] of dword ;

    n:dword ;

    procedure GetB ;

    var

    i,m:Dword ;

    begin

    fillchar(a,sizeof(a),0) ;

    m := n ;

    i := 1 ;

    while m > 0 do

    begin

    a[i] := m mod 2 ;

    m := m div 2 ;

    inc(i) ;

    end ;

    end ;

    procedure Change ;

    var

    i,t:Dword ;

    begin

    for i := 1 to 16 do

    begin

    t := a[i] ;

    a[i] := a ;

    a := t ;

    end ;

    end ;

    procedure GetD ;

    var

    i:Dword ;

    function E(x:Dword):longint ;

    var

    i,m:Dword ;

    begin

    m := 1 ;

    for i := 2 to x do

    m := m * 2 ;

    exit(m) ;

    end ;

    begin

    n := 0 ;

    for i := 1 to 32 do

    if a[i] = 1 then

    inc(n,E(i)) ;

    end ;

    BEGIN

    read(n) ;

    GetB ;

    Change ;

    GetD ;

    writeln(n) ;

    END.

    后来想了想 .. 又 ————

    program ex;

    var

    n:Dword;

    BEGIN

    read(n);

    writeln((n shl 16) + (n shr 16)) ;

    END.

    再再后来看到LX某人的题解 又————

    Program ex;

    var

    n:Dword ;

    BEGIN

    read(n) ;

    writeln(swap(n)) ;

    END .

  • 0
    @ 2009-09-27 18:17:40

    没办法,人长得笨,就得笨笨的来!

    #include

    using namespace std;

    unsigned long long f[35];

    int main()

    {

    unsigned long long n,temp,qy = 1;

    int i, j;

    cin >> n;

    for(i = 32;i >= 1; i--)

    {

    if(n > 0)

    {

    f[i] = n % 2;

    n /= 2;

    }

    else

    break;

    }

    for(i = 1,j =17 ; i = 1;i--)

    {

    temp += f[i] * qy;

    qy *= 2;

    }

    cout

  • 0
    @ 2009-09-27 11:53:10

    var

    s,b,n:int64;

    begin

    read(n);

    s:=(n shr 16) or 0;

    b:=n and ((1 shl 16)-1);

    write((b shl 16) or s);

    end.

  • 0
    @ 2009-09-27 10:41:37

    program p1201;

    var

    s,b,n:int64;

    begin

    read(n);

    s:=(n shr 16) or 0;

    b:=n and ((1 shl 16)-1);

    write((b shl 16) or s);

    end.

    弱弱的位运算!!!!!!!!SB

  • 0
    @ 2009-09-24 07:53:26

    位运算是王道

  • 0
    @ 2009-09-24 00:27:56

    由于不会用swap,也没有想位运算

    就直接用了一个 binstr,偷了点小懒

  • 0
    @ 2009-09-20 16:43:43

    #include

    using namespace std;

    __int64 a,b;

    int main(){

    cin>>a;

    b=(a%65536)*65536+(a/65536);

    cout

  • 0
    @ 2009-09-10 22:22:55

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

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

    Accepted 有效得分:100 有效耗时:0ms

    ms!

  • 0
    @ 2009-09-09 00:04:37

    Var

    n:longword;

    Begin

    Readln(n);

    Writeln((n shl 16) or (n shr 16));

    End.

  • 0
    @ 2009-09-08 19:55:44

    这是个神奇的程序,考察选手们对于dword和swap的用法。

    虽然我一开始也不明白

    但是我记住了以后就再也没有忘记

    这个题太经典了

    附代码:

    var n:dword;begin readln(n);writeln(swap(n));end.

    XXX,1314521!

  • 0
    @ 2009-09-04 00:13:20

    swap

    晕,用longint不行....用dword;

  • 0
    @ 2009-08-29 13:04:22

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

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

    Accepted 有效得分:100 有效耗时:0ms

    提交了三次

    我好失败呀

信息

ID
1201
难度
3
分类
模拟 点击显示
标签
(无)
递交数
3699
已通过
1824
通过率
49%
被复制
13
上传者