题解

29 条题解

  • 0
    @ 2016-02-11 21:02:29

    千万记住,最后再四舍五入!过程中不要四舍五入,会WA!

  • 0
    @ 2015-07-25 23:08:05

    type damn=array[0..256] of longint;
    var i,j,n,totalround,aa,bb,cc:longint;
    feel,fortune,state,basic:double;
    muti:longint;
    s1,s2:string;
    poss:double;
    sum,len,fuckyouasshole:longint;
    a,b,c:array[0..256] of longint;
    procedure fuck(var sx:string;var ax:damn);
    var j,k:longint;
    begin
    j:=length(sx);
    for k:=1 to length(sx) do begin
    val(sx[k],ax[j]);
    dec(j);
    end;
    end;
    begin
    while not eof do begin
    poss:=100;
    sum:=0;
    fillchar(a,sizeof(a),0);
    fillchar(b,sizeof(b),0);
    fillchar(c,sizeof(c),0);
    readln(n);
    totalround:=round(ln(n)/ln(2));
    for i:=1 to totalround do begin
    readln(aa,bb,cc);
    poss:=poss*aa/100*bb/100*cc/100;
    end;
    writeln(poss:0:2);//possibility finished
    for i:=1 to totalround do begin
    readln(feel,fortune,state,basic);
    muti:=trunc(feel*fortune*state*basic/1000000+basic);
    sum:=sum+muti;
    end;
    readln(fuckyouasshole);//wasted data(It's the length)
    readln(s1);
    str(sum,s2);
    fuck(s1,a);
    fuck(s2,b);
    if length(s1)>=length(s2) then len:=length(s1) else len:=length(s2);
    for i:=1 to len do begin
    c[i]:=c[i]+a[i]+b[i];
    if c[i]>=10 then begin
    c[i]:=c[i] mod 10;
    inc(c[i+1]);
    end;
    end;
    for i:=len downto 1 do write(c[i]);
    writeln;
    end;
    end.
    模拟+高精度

    大神看看哪里错了 90分最后一点没过

  • 0
    @ 2009-07-14 10:59:20

    没题做了,只好来搞这道沙茶题……

  • 0
    @ 2009-07-09 20:03:16

    我明白了。.是不是要考高精度啊..

  • 0
    @ 2009-01-09 18:24:07

    第110的通过,吉利的数字,呵呵。

    不会求LOG(N),直接爆搜的,居然过了,汗……

  • 0
    @ 2008-10-28 08:18:24

    赶上了第100个。。

    汗。。ROUND和TRUNC为什么会差别那么大。。

    至今还是不明白。

    ··还有。BS出题者!

    ·那个什么‘简简单单’·出的题目都是抄的!

    现在给人封了!

  • 0
    @ 2008-10-19 15:36:58

    C/C++注意要用Ceil函数取整log(n)/log(2),晕死...

  • 0
    @ 2008-09-28 21:59:03

    program vijos1436;

    var n,m,a,b,c,d,i,t,l:longint;

    ch:char;

    s:double;

    aa:array[0..256]of longint;

    begin

    readln(n);

    m:=round(ln(n)/ln(2));

    s:=100;

    for i:=1 to m do

    begin

    readln(a,b,c);

    s:=s*a/100*b/100*c/100;

    end;

    writeln(s:0:2);

    t:=0;

    for i:=1 to m do

    begin

    s:=1;

    readln(a,b,c,d);

    s:=s*a/100*b/100*c/100*d+d;

    t:=t+trunc(s);

    end;

    readln(l);

    for i:=1 to l do

    begin

    read(ch);

    aa[i]:=ord(ch)-48;

    end;

    aa[l]:=aa[l]+t;

    for i:=l downto 1 do

    begin

    if aa[i]0 then write(aa[0]);

    for i:=1 to l do write(aa[i]);

    writeln;

    end.

    easy……

  • 0
    @ 2008-09-15 10:07:23

    恐怖……

  • 0
    @ 2008-09-13 10:34:44

    这个题考的时候评测有问题

    我考试的时候60现在是100

    你可以在这里写上你的解题思路或者解题方法等但规定要求不能贴出任何有关于此题的程序代码

  • 0
    @ 2008-09-03 16:33:22

    谢谢sxpeter!

    终于AC了!

  • 0
    @ 2008-09-02 22:08:32

    大家注意!!!一定要用

    round(ln(n)/ln(2))

    否则用trunc会WA

    害了我一个下午+一个晚上

    555555...v_v

  • 0
    @ 2008-09-01 17:08:59

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    类型:模拟+高精度运算

    我用小号交了一次!阿门!管理员请别封号!

    注意:用字符串进行高精运算虽说简便,但好像不太准确.

    需要把Sun和temp转换成数组再运算.

  • 0
    @ 2008-08-31 13:40:33

    题目大意:

    (背景真的很烦琐……)根据给出的每场比赛获胜的的几率,运气度,士气三个条件计算出简单的获胜概率。根据每场比赛给出的手感,运气,状态,基础得分来算出简单应该能得的分数。

    算法:

    模拟+高精度

    解析:

    这个题目的描述非常烦人,可以说是4个题目中最烦琐的一个,但是又是最简单的一个。

    输入的第一个数字N代表参赛队伍,但是题目说了比赛是淘汰制,所以N=2^k。简单一共参加了k次的比赛。

    前k个数字用来计算胜利的概率,它可以用公式直接过

    P=(A1*B1*C1/10^6)*(A2*B2*C2/10^6)……(Ak*Bk*Ck/10^6)*100

    因为每一个数字都是百分数,所以每个数除以100,3个数就一共除以10^6

    后k个数用来计算简单的预计得分,题目也有说明计算的方法:

    Sum=sum(trunc(Ai*Bi*Ci*Di)+Di)) (1直接使用高精度,这是正确的做法,不过要注意的是不要因为节省空间而只把高精度的数组开到了255,因为在上面那个例子里面会有进位而会导致数组的无效存取RE。

  • 0
    @ 2008-08-31 20:12:35

    var

    a:array[0..500]of longint;

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

    eve,x,y,z,w:extended;

    str:string;

    function logg(x:longint):longint;

    begin

    logg:=0;

    while x>1 do

    begin

    x:=x div 2;

    inc(logg);

    end;

    end;

    begin

    readln(m); n:=logg(m);

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

    eve:=1; tot:=0;

    for i:=1 to n do

    begin

    readln(x,y,z);

    eve:=eve*(round((x*y*z)/100)/10000);

    end;

    for i:=1 to n do

    begin

    readln(x,y,z,w);

    tot:=tot+trunc(x*y*z*w/1000000+w);

    end;

    readln(m); readln(str);

    for i:=m downto 1 do a:=ord(str[i])-48;

    i:=500;

    while tot>0 do

    begin

    a[i]:=a[i]+tot mod 10;

    tot:=tot div 10;

    dec(i);

    end;

    for i:=500 downto 1 do

    begin

    a:=a+a[i] div 10;

    a[i]:=a[i] mod 10;

    end;

    j:=1; while a[j]=0 do inc(j);

    writeln(eve*100:0:2);

    for i:=j to 500 do write(a[i]); writeln;

    end.

    80..... 哪里错了

  • 0
    @ 2008-08-31 09:11:32

    郁闷,谁写个算法,貌似照题目说的打还是错啊···

  • 0
    @ 2008-08-30 23:09:36

    数据终于改过来了

  • 0
    @ 2008-08-30 17:19:40

    数据有错么?

  • 0
    @ 2008-08-30 15:58:21

    关于这题,说什么好

  • 0
    @ 2008-08-30 15:46:39

    我得了60 纯蒙 基本看不明白,叙述太模糊了

信息

ID
1436
难度
7
分类
模拟 | 高精度 点击显示
标签
(无)
递交数
263
已通过
55
通过率
21%
被复制
2
上传者