• 【NOIP2017练习】溢出(模拟)


    题意:

    思路:

    a*b<=c <====> b<=c div a

     1 var ch,maxs,s:ansistring;
     2     v,k,i,maxl,l,len,cnt,cas:longint;
     3     now,tmp,max:qword;
     4     flag:boolean;
     5 
     6 begin
     7  assign(input,'overflow.in'); reset(input);
     8  assign(output,'overflow.out'); rewrite(output);
     9  readln(cas);
    10  for v:=1 to cas do
    11  begin
    12   readln(ch); len:=length(ch);
    13   max:=1; k:=0;
    14   for i:=1 to len do
    15    if (ch[i]>='0')and(ch[i]<='9') then k:=k*10+ord(ch[i])-ord('0');
    16    if k=8 then maxl:=3;
    17   if k=16 then maxl:=5;
    18   if k=32 then maxl:=10;
    19   if k=64 then
    20    if ch[1]='i' then maxl:=19
    21      else maxl:=20;
    22   if ch[1]='i' then dec(k);
    23   for i:=1 to k-1 do max:=max*2;
    24   max:=max-1+max;
    25   str(max,maxs);
    26   readln(ch); len:=length(ch);
    27   flag:=false;
    28   i:=0; now:=1; cnt:=0;
    29   while (not flag)and(i<=len) do
    30   begin
    31    inc(i); tmp:=0; l:=0; s:=''; inc(cnt);
    32    while (i<=len)and(ch[i]>='0')and(ch[i]<='9') do
    33    begin
    34     inc(l); s:=s+ch[i];
    35     if (l>maxl)or(l=maxl)and(s>maxs) then
    36     begin
    37      flag:=true; break;
    38     end;
    39     tmp:=tmp*10+ord(ch[i])-ord('0');
    40     inc(i);
    41    end;
    42    if flag then break;
    43    if now>max div tmp then
    44    begin
    45     flag:=true; break;
    46    end;
    47    now:=now*tmp;
    48   end;
    49   if flag then writeln(cnt)
    50    else writeln('never');
    51  end;
    52 
    53  close(input);
    54  close(output);
    55 end.
  • 相关阅读:
    Notepadd ++ PluginManager安装
    Srping cloud Ribbon 自定义负载均衡
    Spring cloud Eureka 和 Zookeeper 比较
    Spring cloud info信息显示
    kafka 在Windows端安装 找不到或无法加载主类 的解决方案
    Linux kafka 单机安装
    mina
    @bzoj
    @51nod
    @topcoder
  • 原文地址:https://www.cnblogs.com/myx12345/p/7797499.html
Copyright © 2020-2023  润新知