123 条题解
-
0freefly LV 10 @ 2009-08-15 10:02:17
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msvar
str,sy,sk,s:string;
k,i,j,l,v:longint;
change:array[1..15,1..2]of longint;
b:array[0..9]of longint;
ans:extended;
procedure dfs(n:longint);
var
u:longint;
begin
if b[n]=1 then exit;
b[n]:=1;
for u:=1 to k do
if change[1]=n then
dfs(change[2]);
end;
begin
readln(str);
sy:='';
sk:='';
for i:=1 to length(str) do if str[i]=' ' then j:=i;
for i:=1 to j-1 do sy:=sy+str[i];
for i:=j+1 to length(str) do sk:=sk+str[i];
val(sk,k,j);
for i:=1 to k do readln(change[i][1],change[i][2]);
for i:=1 to length(sy) do
begin
s:='';
s:=s+sy[i];
val(s,j,l);
fillchar(b,sizeof(b),0);
dfs(j);
if i1 then
begin
v:=0;
for l:=0 to 9 do if b[l]=1 then inc(v);
ans:=ans*v;
end
else
begin
v:=0;
for l:=1 to 9 do if b[l]=1 then inc(v);
ans:=v;
end;
end;
writeln(ans:0:0);
end. -
02009-08-12 09:11:47@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
所谓规则的右部不能为0是为了防止最后的产生数的最高位为0 -
02009-08-03 18:06:35@
var n,s:string;
ans:double;
f:array[0..9] of longint;
x,y,i,j,p,k:integer;
b:array[0..9,0..9] of boolean;
begin
readln(s);
n:=copy(s,1,pos(' ',s)-1);
delete(s,1,pos(' ',s));
val(s,k);
for i:=1 to k do
begin readln(x,y); b[x,y]:=true; end;
for p:=0 to 9 do
for i:=0 to 9 do if ip then
for j:=0 to 9 do if ij then
if b and b[p,j] then b:=true;
for i:=0 to 9 do
for j:=0 to 9 do
if b then inc(f[i]);
ans:=1;
for i:=1 to length(n) do
ans:=ans*(f[ord(n[i])-48]+1);
writeln(ans:0:0);
end. -
02009-07-31 10:14:59@
{超短}
program leo;
var n,s:string;
ans:double;
f:array[0..9] of longint;
x,y,i,j,p,k:integer;
b:array[0..9,0..9] of boolean;
begin
readln(s);
n:=copy(s,1,pos(' ',s)-1);
delete(s,1,pos(' ',s));
val(s,k);
for i:=1 to k do
begin readln(x,y); b[x,y]:=true; end;
for p:=0 to 9 do
for i:=0 to 9 do if ip then
for j:=0 to 9 do if ij then
if b and b[p,j] then b:=true;
for i:=0 to 9 do
for j:=0 to 9 do
if b then inc(f[i]);
ans:=1;
for i:=1 to length(n) do
ans:=ans*(f[ord(n[i])-48]+1);
writeln(ans:0:0);
end. -
02009-07-29 13:51:07@
#include
#include
using namespace std;
int map[20][20],map1[20][20],b[100],len;
int num=0,kp;
void dfs1(int a)
{
int i;
for(i=0;i -
02009-07-27 09:15:22@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msvar
n1,k1,n:string;
s:double;
f:array[0..100] of longint;
i,j,p,k:integer;
b:array[0..100,0..100] of boolean;
a:array[1..100,1..2] of integer;
begin
readln;
readln;
readln(n1); n:=' ';
i:=1;
while n1[i]' ' do begin n:=n+n1[i]; inc(i); end;
k1:='';
for j:=i+1 to length(n1) do k1:=k1+n1[j];
val(k1,k);
fillchar(b,sizeof(b),false);
for i:=1 to k do begin
readln(a,a);
b[a,a]:=true;
end;
for p:=0 to 9 do
for i:=0 to 9 do
for j:=0 to 9 do
begin
if (i=p)1or1(i=j)or(j=p) then continue;
if b and b[p,j] then b:=true;
end;
for i:=0 to 9 do
for j:=0 to 9 do
if b th1en inc(f[i]);
s:=1;
for i:=1 to length(n) do
if n[i]' ' then s:=s*(f[ord(n[i])-48]+1);
writeln(s:0:0);
end. -
02009-07-20 23:24:30@
看似简单,细节地方真多,调的我都快发疯了。。。。。
1、假设那个布尔数组是g,那么一定要设g[i][i] = true;而不是计数变量=1
因为可能有这样的变态数据
1 9
9 1
让g[i][i] 在floyd的时候为true,这样计数变量多加了一个。
2、按理说高精度不应该犯错,但是还是没仔细思考。
就是要先乘后进位,我边乘边进位是不行的。。。。。。
看这里C++的代码太少发一个:
#include
using namespace std;
int k,a[16],b[16],kk[10],r[10],ans[100],l(1);
bool g[10][10];
string n;
void powx(int x,int y)
{
for(int i = 0;i < y;++i)
{
for(int j = 1;j > n >> k;
for(int i = 0;i < k;++i) {cin >> a[i] >> b[i]; g[a[i]][b[i]]=true;}
for(int k = 0;k < 10;++k)
for(int i = 0;i < 10;++i)
for(int j = 0;j < 10;++j)
g[i][j]=g[i][j]||(g[i][k]&&g[k][j]);
for(int i = 0;i < 10;++i)
{
g[i][i] = true;
for(int j = 0;j < 10;++j) if(g[i][j]) ++kk[i];
}
for(int i = 0;i < n.length();++i) ++r[n[i]-'0'];
ans[1] = 1;
for(int i = 0;i < 10;++i) powx(kk[i],r[i]);
for(int i = l;i >= 1;--i) cout -
02009-06-30 00:10:33@
耻辱啊 传递闭包写错了 调了快1个小时 ac率骤降2%
传递闭包比较方便 但顺序千万不要写错! -
02009-05-29 09:20:16@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms好扯,竟然要extended才能过!
-
02009-03-25 18:32:58@
double可是能表示到45位以上,再超就只能加‘e’了,虽然double是308
-
02009-02-22 21:20:51@
第100道题AC,做个纪念!
-
02009-02-02 12:14:19@
Type
aa=array[0..9]of boolean;
Var
ma:array[0..9] of aa;
ans:array[0..9] of integer;
abc,i,j,pos1,n,code,data1,data2:longint;
sn:real;
a:array[1..30,1..2] of integer;
str,str1:string;
Procedure dfs(ac:integer);
var
i:integer;
begin
for i:=1 to n do
if ma[ac][a] and not ma[ac][a] then
begin
inc(ans[ac]);
ma[ac][a]:=true;
dfs(ac);
end;
end;
Begin
readln(str);
pos1:=pos(' ',str);
str1:=copy(str,pos1+1,length(str));
val(str1,n,code);
delete(str,pos1,length(str));
for i:=0 to 9 do begin ma[i][i]:=true;ans[i]:=1;end;
for i:=1 to n do readln(a,a);
for i:=0 to 9 do
dfs(i);
sn:=1;
for i:=1 to length(str) do
begin
abc:=ord(str[i])-48;
sn:=sn*ans[abc];
end;
writeln(sn:0:0);
end.实型也是高精度阿……
-
02009-01-17 14:16:45@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02008-12-19 21:31:20@
var
n1,k1,n:string;
s:double;
f:array[0..100] of longint;
i,j,p,k:integer;
b:array[0..100,0..100] of boolean;
a:array[1..100,1..2] of integer;begin
readln(n1); n:=' ';
i:=1;
while n1[i]' ' do begin n:=n+n1[i]; inc(i); end;
k1:='';
for j:=i+1 to length(n1) do k1:=k1+n1[j];
val(k1,k);
fillchar(b,sizeof(b),false);
for i:=1 to k do begin
readln(a,a);
b[a,a]:=true;
end;
for p:=0 to 9 do
for i:=0 to 9 do
for j:=0 to 9 do
begin
if (i=p)or(i=j)or(j=p) then continue;
if b and b[p,j] then b:=true;
end;
fillchar(f,sizeof(f),0);
for i:=0 to 9 do
for j:=0 to 9 do
if b then inc(f[i]);
s:=1;
for i:=1 to length(n) do
if n[i]' ' then s:=s*(f[ord(n[i])-48]+1);
writeln(s:0:0);
end.
没用高精度,改用实型,直接AC -
02008-11-11 18:53:36@
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02008-11-08 16:00:37@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02008-10-29 17:41:24@
第二道改变代码风格后AC的题目
纪念一下 -
02008-10-27 17:23:28@
判断每一个数一共可以变成多少个数,然后根据乘法原理乘起来就行了。用F表示I这个数可以转换的数,那么ANSWER:=F[1]*F[2]*.....*F[N]。还要用个高精度
-
02008-10-19 11:24:54@
我没有solution
-
02008-10-19 10:05:53@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
这题被我刷下一个百分点!!!