如果发现广告等破坏行为,请尽量将条目恢复到较早的版本而不是把相应内容直接删除,谢谢合作。

URAL/1095

来自"NOCOW"

跳转到: 导航, 搜索
program ural1095;
 
const
 
  tail:array[0..6]of integer=(3241,2134,1342,1243,2341,1234,1324);
 
var
 
  s:array[0..4]of byte;
 
  n,i:integer;
 
  c:char;
 
  d:byte;
 
  x:int64;
 
begin
 
  readln(n);
 
  for i:=1 to n do begin
 
    fillchar(s,sizeof(s),0);x:=0;
 
    repeat
 
      read(c);d:=ord(c)-48;
 
      if d=0 then
 
        inc(s[0])
 
      else if (d<5) and (s[d]=0) then
 
        s[d]:=1
 
      else
 
        x:=x*10+d;
 
    until eoln;
 
    readln;
 
    if x>0 then write(x);
 
    write(tail[(x mod 7)*10000 mod 7]);
 
    for d:=1 to s[0] do
 
      write(0);
 
    writeln;
 
  end;
 
end.

楼上好像是错的,但我的思路和他是一致的

var
 c:char;
 s:string;
 i,j,x,n,k:longint;
 b:array[0..9]of longint;
 base:array[0..6]of longint=(4123,2134,1342,1243,2341,1234,1324);
begin
readln(n);
for k:=1 to n do
begin
 fillchar(b,sizeof(b),0);
 x:=0;
 readln(s);
 for i:=1 to length(s) do
   inc(b[ord(s[i])-48]);
 dec(b[1]);dec(b[2]);dec(b[3]);dec(b[4]);
 for i:=1 to 9 do
  begin
   for j:=1 to b[i] do
    x:=(x*10+i) mod 7;
  end;
  x:=(x*10000)mod 7;
 for i:=1 to 9 do
  for j:=1 to b[i] do
   write(i);
  write(base[x]);
 for i:=1 to b[0] do
  write(0);
 writeln;
end;
end.
 
From churchill
个人工具