166 条题解
-
0miaoyiflyride LV 8 @ 2013-07-12 21:19:45
var
a:array[0..9] of longint;
b:array[0..10000] of longint;
i,j,k,n,m,ans,ans1:longint;
function change(x:longint):longint;
var i,j,k:longint;
begin
k:=x; change:=0;
while k>0 do
begin
j:=k mod 10;
k:=k div 10;
change:=change+a[j];
end;
if x=0 then change:=6;
end;
begin
readln(n);n:=n-4;
a[0]:=6;a[1]:=2;a[2]:=5;a[3]:=5;a[4]:=4;
a[5]:=5;a[6]:=6;a[7]:=3;a[8]:=7;a[9]:=6;
for i:=0 to 10000 do
b[i]:=change(i);
b[0]:=6;
for i:=0 to 10000 do
if b[i]<n then
for j:=0 to 10000 do
if b[i]+b[j]<n then
begin
k:=n-b[i]-b[j];
if change(i+j)=k then inc(ans);
end;
writeln(ans);
end.{很好写,就是有点慢}
-
02012-11-03 13:39:54@
用模拟好难,23,24算不开啊!(可能范围小,但这两个数打表快)
-
02012-11-01 18:24:34@
打表强大,不解释
-
02012-10-28 18:23:06@
我只能说这数据太弱了,一点简直都不要,0——1500暴力枚举就完了,总共40行
-
02012-10-13 12:33:49@
编译通过...
├ 测试数据 01:答案正确... (0ms, 580KB)
├ 测试数据 02:答案正确... (0ms, 580KB)
├ 测试数据 03:答案正确... (0ms, 580KB)
├ 测试数据 04:答案正确... (0ms, 580KB)
├ 测试数据 05:答案正确... (0ms, 580KB)
├ 测试数据 06:答案正确... (0ms, 580KB)
├ 测试数据 07:答案正确... (0ms, 580KB)
├ 测试数据 08:答案正确... (0ms, 580KB)
├ 测试数据 09:答案正确... (0ms, 580KB)
├ 测试数据 10:答案正确... (0ms, 580KB)---|---|---|---|---|---|---|---|-
Accepted / 100 / 0ms / 580KB
打表秒过{
ID:darkgod-z
PROG:vijos P1496
HANG:PASCAL
}
const
a:array [0..24] of integer=(
0,
0,0,0,0,0,
0,0,0,0,0,
0,0,1,2,8,
9,6,9,29,39,
38,65,88,128);
var
n:integer;
begin
readln(n);
writeln(a[n]);
end. -
02012-09-28 14:17:23@
var
n,ans,u,k1,k2,k3:longint;
a:array[0..9]of longint;
procedure firstdeal;
begin
a[0]:=6;
a[1]:=2;
a[2]:=5;
a[3]:=5;
a[4]:=4;
a[5]:=5;
a[6]:=6;
a[7]:=3;
a[8]:=7;
a[9]:=6;
end;
begin
firstdeal;
readln(n);
dec(n,4);
for k1:=0 to 999 do
for k2:=0 to 999 do
begin
k3:=k1+k2;
u:=0;
if k1 -
02012-08-20 11:38:26@
思维不够啊,看了楼下的大牛真是打开眼界,我怎么就想不到这样枚举呢!!!Orz~~~
-
02010-04-15 16:55:31@
program bangbang
var
m,i,j,k,n,s:integer
a:array[0..24] of integer
readln(n);
s:=0
a[0]:=6
a[1]:=2
a[2]:=5
a[3]:=5
a[4]:=4
a[5]:=5
a[6]:=6
a[7]:=3
a[8]:=7
a[9]:=6
for i:=10 to 24 do
begin
m:i
a[i]:=a[(m mod 10)]+a[(m div 10)]
end;for i:=0 to 24 do
for j:=0 to 24 do
for k:=0 to 24 do
begin
if(i+j=k)and(a[i]+a[j]+a[k]+4=n)
then
inc(s);
end;
writeln(s);
end. -
02010-04-11 09:06:51@
问一下,高手回答下啦
这道题目的‘=’和‘+’要不要算在那几根火柴棒里啊 -
02010-03-06 22:07:05@
program p1496(input,output);
const sz:array [0..9] of integer=(6,2,5,5,4,5,6,3,7,6);
var a,b,n,zs,zha,zhb,zhh:longint;
function qq(shu:longint):longint;
var gw:longint;
begin
qq:=0;
if shu=0
then qq:=sz[0]
else while shu>0 do
begin
gw:=shu mod 10;
shu:=shu div 10;
qq:=qq+sz[gw];
end;
end;
begin
readln(n);
zs:=0;
for a:=0 to 1000 do
for b:=0 to 1000 do
begin
zha:=qq(a);
zhb:=qq(b);
zhh:=qq(a+b);
if zha+zhb+zhh+4=n
then zs:=zs+1;
end;
writeln(zs);
end.有人这样写道…………
但……我……%——%
program p1496(input,output);
var n:longint;
begin
readln(n);
case n of
0..12:writeln(0);
13:writeln(1);
14:writeln(2);
15:writeln(8);
16,18:writeln(9);
17:writeln(6);
19:writeln(29);
20:writeln(39);
21:writeln(38);
22:writeln(65);
23:writeln(88);
24:writeln(128);
end;
end.……………………………………………………
…………不要迷恋哥,哥只是个传说…………
…………………………………………………… -
02009-11-19 21:56:34@
这样都0秒
program v1;
const d:array[0..9]of 1..10=(6,2,5,5,4,5,6,3,7,6);
var e:array[0..999]of integer;
a,b,c,s,n,total,i,j,k:integer;
begin
readln(n);n:=n-4;total:=0;
for i:=0 to 9 do e[i]:=d[i];
for i:=1 to 9 do
for j:=0 to 9 do e:=d[i]+d[j];
for i:=1 to 9 do
for j:=0 to 9 do
for k:=0 to 9 do
e:=d[i]+d[j]+d[k];for a:=0 to 999 do
for b:=0 to 999 do
begin c:=a+b;if (c -
02009-11-15 22:28:39@
[silver=white]
program noip2008_2;
var a:array[0..9] of integer;
i,j,n,k:longint;
function sum(i:longint):longint;
var x:integer;
begin
sum:=0;
if i=0 then sum:=6;
while i0 do
begin
x:=i mod 10;
sum:=sum+a[x];
i:=i div 10;
end;
end;
begin
readln(n); k:=0;
a[0]:=6; a[1]:=2; a[2]:=5; a[3]:=5; a[4]:=4; a[5]:=5; a[6]:=6;
a[7]:=3; a[8]:=7; a[9]:=6;
for i:=0 to 1000 do
for j:=0 to 1000 do
if (sum(i)+sum(j)+sum(i+j)=n-4) then inc(k);
writeln(k);
readln
end. -
02009-11-15 20:33:33@
编译通过...
├ 测试数据 01:答案正确... 493ms
├ 测试数据 02:答案正确... 493ms
├ 测试数据 03:答案正确... 493ms
├ 测试数据 04:答案正确... 493ms
├ 测试数据 05:答案正确... 477ms
├ 测试数据 06:答案正确... 477ms
├ 测试数据 07:答案正确... 477ms
├ 测试数据 08:答案正确... 477ms
├ 测试数据 09:答案正确... 493ms
├ 测试数据 10:答案正确... 493ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:4866ms -
02009-11-11 20:05:58@
var a:array[0..9] of integer;
q,h,z,i,j,n,sum:integer;
function qs(m:integer):integer;
var g,s,b,qi,i:integer;
begin
if m=1000 then begin
g:=m mod 10;
i:=m div 10;
s:=i mod 10;
i:=i div 10;
b:=i mod 10;
qi:=i div 10;
qs:=a[g]+a+a+a[qi];
end;
end;
begin
readln(n);
a[0]:=6;a[1]:=2;a[2]:=5;a[3]:=5;a[4]:=4;
a[5]:=5;a[6]:=6;a[7]:=3;a[8]:=7;a[9]:=6;
for i:=0 to 1000 do
for j:=0 to 1000 do
begin
q:=qs(i)+qs(j);
h:=qs(i+j);
if q+h+4=n then inc(sum);
end;
writeln(sum);
end. -
02009-11-08 17:35:48@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms#include
int N;
int a[2000]={6,2,5,5,4,5,6,3,7,6};
int n,total=0;
void pre_doing()
{
int i;
for (i=10;i -
02009-11-04 16:16:15@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
先把0到1422的全部火柴值算出来,然后穷举。
var
a:array[0..9] of longint;
b:array[0..1422]of longint;
n,i,j,sum,max:longint;
procedure quwei;
var k,x,i:longint;
begin
for i:=1 to 1422 do
begin
k:=i;
while k>0 do
begin
x:=k mod 10;
k:=k div 10;
b[i]:=b[i]+a[x];
end;
end;
end;
//---|---|---|---|---|--
begin
fillchar(b,sizeof(b),0);
a[0]:=6;
a[1]:=2;
a[2]:=5;
a[3]:=5;
a[4]:=4;
a[5]:=5;
a[6]:=6;
a[7]:=3;
a[8]:=7;
a[9]:=6;
read(n);
n:=n-4;
quwei;
b[0]:=6;
b[10]:=8;
b[100]:=14;
b[1000]:=20;
max:=0;
for i:=0 to 711 do
for j:=0 to 711 doif b[i]+b[j]+b=n then
if ij then
inc(sum)
else inc(max);
write(sum+max);
end. -
02009-11-01 11:07:06@
先用枚举做出来,再打一张表上去。时间复杂度O(1),嚯嚯~~~
-
02009-10-29 10:40:11@
program p1496;
const c:array[0..9]of longint=(6,2,5,5,4,5,6,3,7,6);maxn=1111;
var
a:array[0..maxn]of longint;
i,j,n,count:longint;
begin
readln(n);
n:=n-4;
a[0]:=6;
for i:=1 to maxn do
begin
j:=i;
while j>0 do
begin
inc(a[i],c[j mod 10]);
j:=j div 10;
end;
end;
for i:=0 to maxn do if a[i] -
02009-10-28 08:07:00@
编译通过...
├ 测试数据 01:答案正确... 166ms
├ 测试数据 02:答案正确... 181ms
├ 测试数据 03:答案正确... 181ms
├ 测试数据 04:答案正确... 197ms
├ 测试数据 05:答案正确... 150ms
├ 测试数据 06:答案正确... 150ms
├ 测试数据 07:答案正确... 197ms
├ 测试数据 08:答案正确... 166ms
├ 测试数据 09:答案正确... 181ms
├ 测试数据 10:答案正确... 166ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:1735ms
这就是15分钟裸枚举的效率。。 -
02009-10-27 20:27:52@
去年挂在代码不足40行的题>.< 为什么呢.
强烈建议管理员删除不道德贴!!!