数论算法如下:
若正整数n可分解为(p1^a1)*(p2^a2)*…*(pk^ak)
其中pi为两两不同的素数,ai为对应指数
n的约数个数为(1+a1)*(1+a2)*….*(1+ak)
program poj2603;
const
a:array[1..25] of integer=(2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97);
var
s:array[1..25] of integer;
data:array[1..10] of integer;
i:integer;
ans:longint;
procedure work;
var
i,num,k,j:integer;
begin
for i:=1 to 10 do
begin
num:=data[i];
for j:=1 to 25 do
if (a[j]<=num) and (num>1) then
begin
if (num mod a[j]=0) and (num>1) then
begin
while (num mod a[j]=0) and (num>1) do
begin
inc(s[j]);
num:=num div a[j];
end;
end;
end
else break;
if num>1 then
begin
k:=1;
for j:=i+1 to 10 do
if data[j] mod num=0 then
begin
data[j]:=data[j] div num;
inc(k);
end;
ans:=ans*(k+1);
end;
end;
for i:=1 to 25 do
if s[i]<>0 then ans:=ans*(s[i]+1);
end;
begin
fillchar(s,sizeof(s),0);
fillchar(data,sizeof(data),0);
for i:=1 to 10 do
readln(data[i]);
ans:=1;
work;
writeln(ans mod 10);
end.